温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用spring框架ResponseEntity实现文件下载

发布时间:2022-02-14 09:41:39 来源:亿速云 阅读:396 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关如何使用spring框架ResponseEntity实现文件下载的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

spring框架ResponseEntity实现文件下载

后台代码

@RequestMapping("downLoad")
public ResponseEntity<byte[]> downloadPromisePdf() {
  String fileName = "企业诚信守法承诺书.pdf";
  try {
    byte[] pdf = **;//byte文件
    String dfileName = new String(fileName.getBytes("gb2312"), "iso8859-1");
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    headers.setContentDispositionFormData("attachment", dfileName);
    return new ResponseEntity<>(pdf, headers, HttpStatus.OK);
  } catch (BuzEx e){
    logger.error( e.getMessage());
  }catch (Exception e) {
  }
  return null;
}

前端直接window.location.href='/downLoad';

ResponseEntity免压缩多文件下载

免压缩批量文件下载

后台ResponseEntity代码还是一次请求下载一个

前台js改为发出多个请求

js中先用数组储存需要下载的文件参数信息,然后循环数组执行下载方法,下载方法则先ajax判断文件是否存在,是则动态创建a标签批量下载文件

//获得文件数组ids后 循环下载方法
$.each(ids,function(i,value){    	
   	downLoad(fileFunctionPathArray[i],fileNameInServerArray[i],fileOriginalNameArray[i],ids[i]);
    })
//下载方法
function downLoad(fileFunctionPath,fileNameInServer,fileOriginalName,ids){
            $.ajax({
            	//检查文件是否存在
                url: "/ResourceManage/resourceDownloaduserLink/checkPermission",
                data: {
                    sysuserid: localStorage.getItem("id"),
                    resourceid: ids
                },
                success: function (data) {//文件存在则创建动态a标签批量下载文件
                    if (data.success) {
                    //ResponseEntity下载文件的url
                    	var url = "../filehandle/downLoad.do?filePlatPath=" 
                        	+ "resource&fileFunctionPath=" + fileFunctionPath 
                        	+ "&fileNameInServer=" + fileNameInServer
                        	+ "&fileOriginalName=" + fileOriginalName;
                    	var fileName = fileNameInServer;
                    	
                    	downloadFile(url,fileName);//动态创建a标签 批量下载
                    }
                }
            })
        }
		//动态创建a标签
        const downloadFile = (url, fileName = '') => {
  		  let eleLink = document.createElement('a');
  		  eleLink.download = fileName;
  		  eleLink.style.display = 'none';
  		  eleLink.href = url;
  		  // 受浏览器安全策略的因素,动态创建的元素必须添加到浏览器后才能实施点击
  		  document.body.appendChild(eleLink);
  		  // 触发点击  
  		  eleLink.click();
  		  // 然后移除
  		  document.body.removeChild(eleLink);
  		};

点击下载则会 批量同时下载

如何使用spring框架ResponseEntity实现文件下载

感谢各位的阅读!关于“如何使用spring框架ResponseEntity实现文件下载”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI