当前位置: 首页 > news >正文

江门高端网站建设网站网页区别

江门高端网站建设,网站网页区别,新特网架公司,wordpress提醒场景背景 1.一般来说,都是使用get请求后台接口,如此后台返回文件流于浏览器,则可直接下载。 2.那么除一般情况,就有特殊情况,比如你的请求接口参数特别长,此时便不可使用get请求,get请求的参数…

场景背景

1.一般来说,都是使用get请求后台接口,如此后台返回文件流于浏览器,则可直接下载。

2.那么除一般情况,就有特殊情况,比如你的请求接口参数特别长,此时便不可使用get请求,get请求的参数长度是有限的。那么就使用到本文的解决方案。

废话不多说,直接撸代码!!!

一 JAVA后台接口示例

    /*** 下载文件** @param request  request请求对象* @param response response相应对象* @param userVO     请求参数-接收前端formData对象*/@RequestMapping("/download")@ResponseBodypublic void downloadFile(HttpServletRequest request, HttpServletResponse response, UserVO userVO) throws IOException {//得到要下载的文件名String fileName = request.getParameter("filename");fileName = new String(fileName.getBytes("iso8859-1"), StandardCharsets.UTF_8);//上传的文件都是保存在/WEB-INF/upload目录下的子目录当中String fileSaveRootPath = request.getServletContext().getRealPath("/WEB-INF/upload");//通过文件名找出文件的所在目录String path = findFileSavePathByFileName(fileName, fileSaveRootPath);//得到要下载的文件File file = new File(path + "\\" + fileName);//如果文件不存在if (!file.exists()) {request.setAttribute("message", "您要下载的资源已被删除!!");return;}//处理文件名String realName = fileName.substring(fileName.indexOf("_") + 1);//设置响应头,控制浏览器下载该文件,此处的文件名要进行编码处理否则前端显示会乱码response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realName, String.valueOf(StandardCharsets.UTF_8)));try (//读取要下载的文件,保存到文件输入流FileInputStream in = new FileInputStream(path + "\\" + fileName);//创建输出流OutputStream out = response.getOutputStream()) {//创建缓冲区byte[] buffer = new byte[1024];int len = 0;//循环将输入流中的内容读取到缓冲区当中while ((len = in.read(buffer)) > 0) {//输出缓冲区的内容到浏览器,实现文件下载out.write(buffer, 0, len);}} catch (IOException e) {throw new RuntimeException(e);}}

二 前端代码示例

function exportFn() {var userVO = new FormData();userVO.append('id', id)userVO.append('name', name)ax({method: 'post',url: baseUrl+"/download"),data: userVO,//重要:相应类型必须为blobresponseType: 'blob'}).then(function (res) {var contentDisposition = decodeURI(res.headers["content-disposition"]);var fileRegex = /([^(filename=)]+\.xlsx?)$/g;var result = contentDisposition.match(fileRegex);var fileName = '检查率统计.xlsx';if (result.length > 0) {fileName = result[0]}var blob = new Blob([res.data]);var url = window.URL.createObjectURL(blob); // 创建 url 并指向 blobvar a = document.createElement('a');a.href = url;a.download = fileName;a.click();window.URL.revokeObjectURL(url); // 释放该 url$("input[name=CSRFTid]").hide()});
}

 注意事项:

一 后台文件名需要进行编码操作

//设置响应头,控制浏览器下载该文件,此处的文件名要进行编码处理否则前端显示会乱码
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realName, String.valueOf(StandardCharsets.UTF_8)));

二 前端文件名称进行解码操作

//从header中获取到包含文件名的信息进行解码操作
var contentDisposition = decodeURI(res.headers["content-disposition"]);

三 前端获取文件名

//从header中取得包含文件名的信息并进行解码
var contentDisposition = decodeURI(res.headers["content-disposition"]);
//匹配文件名的正则
var fileRegex = /([^(filename=)]+\.xlsx?)$/g;
var result = contentDisposition.match(fileRegex);
var fileName = '检查率统计.xlsx';
//取得文件名并赋值
if (result.length > 0) {fileName = result[0]
}

后语:

至此,大功告成!!!

http://www.hyszgw.com/news/74337.html

相关文章:

  • wordpress可以做下载站申请网站域名空间
  • 自己可以做视频网站吗助贷获客系统
  • 网站开发合同付款方式智能网站
  • 网站开发超速云网站访问量有什么用
  • 建设网站需要哪些语言网站备案名称必须是公司名
  • 北京手机专业网站建设公司南京学校网站建设策划
  • 外贸seo站安徽百度推广怎么做
  • 广州第一网站个人小程序免费制作平台
  • 怎么做网站注册系统安国手机网站设计
  • 怎样设置网站徐州企业网站模板建站
  • php综合网站源码wordpress添加备案号
  • 宁波公司建网站哪家好莒县住房和建设局网站
  • 手机网站建佛山骏域网站建设专家
  • 建网站平台安全性河南seo推广
  • 国外模板wordpressseo论坛
  • 国外网站做网上生意哪个好网页制作模板素材库
  • 服务器做网站数据库wordpress模板可以添加注册会员
  • 娱乐类网站更换wordpress图标
  • 做网站容易还是app容易做微信公众号微网站
  • 建设装修公司网站网站建设开户行
  • 上海个人医疗网站备案用本地机器做网站服务器
  • 网站关键词下降静态网页怎么做网站
  • 受欢迎的做pc端网站事件营销策划
  • 怎么 给自己的网站做优化呢株洲网站优化找哪家
  • php 免费装修网站网站设计模板 优帮云
  • 北京给网站做系统的公司名称如何搭建门户网站
  • 深圳做网站公司有哪些公司平面设计主要做什么ui
  • 网站建设与seo论文wordpress新建文章页修改图片样式
  • 网站转小程序免费下载简历模板
  • 做网站企业 金坛体育网站建设视频