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

设计网站推荐大百度推广开户2400

设计网站推荐大,百度推广开户2400,白城网络推广,wordpress 调用内容java后端通过HttpServletResponse 返回文件流 在Content-Disposition中插入文件名 一定要设置Access-Control-Expose-Headers,代表跨域该Content-Disposition返回Header可读,如果没有,前端是取不到Content-Disposition的,可以在统…

java后端通过HttpServletResponse 返回文件流

在Content-Disposition中插入文件名
一定要设置Access-Control-Expose-Headers,代表跨域该Content-Disposition返回Header可读,如果没有,前端是取不到Content-Disposition的,可以在统一的配置里添加

response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setCharacterEncoding("UTF-8");
// 跨域暴露Header属性Content-Disposition
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(byType.getName() , StandardCharsets.UTF_8) + ".xls");

在这里插入图片描述

vue前端通过 axios接收文件

老生常谈的 blob或者arraybuffer
这里以arraybuffer举例

export const exportExcel=(data: Object)=>{return request.get( option: {url:'/scrm/customer/exportExcel'data,responseType:'arraybuffer'})
})

找你的axios封装

vue2找 request.js
vue3找service.ts
或者你们自己封装的文件
找到里边的响应拦截器

request.interceptors.response.use
service.interceptors.response.use

在返回成功的前提下单独处理
直接返回response
如果你们封装的axios跟没封装一样可以忽略

if (response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer') {return response
}

封装个统一的方法
TS

const download = {
object: ({data, headers}, fileName :string, contentType: string) => {try {const uri =headers["content-disposition"].split(";")[1].split("filename=")[1];fileName = decodeURIComponent(uri)contentType = headers["content-type"]} catch (e) {console.error(e)}// 老一套blob const blob = new Blob([data],{ type: contentType})const link = document.createElement('a')const href = window.URL.createObjectURL(blob) // 创建下载的链接link.href = hreflink.download = fileNamelink.click()document.body.removeChild(link)window.URL.revokeObjectURL(href)}
}

JS

 downloadObject(res, fileName, contentType) {let data = res.datalet headers = res.headerstry {const uri =headers["content-disposition"].split(";")[1].split("filename=")[1];fileName = decodeURIComponent(uri)contentType = headers["content-type"]} catch (e) {console.error(e)}// 老一套blob const blob = new Blob([data],{ type: contentType})const link = document.createElement('a')const href = window.URL.createObjectURL(blob) // 创建下载的链接link.href = hreflink.download = fileNamelink.click()document.body.removeChild(link)window.URL.revokeObjectURL(href)}

调用

	exportExcel({//请求参数}).then(res => {// vue3download.object(res,'','')// vue2this.downloadObject(res)})

最后

需要注意的一共有两个点
第一 后端必须配置
response.setHeader(“Access-Control-Expose-Headers”, “Content-Disposition”);
第二 axios返回拦截器一定要返回完整的response,不能返回经过加工的response.data

http://www.dtcms.com/wzjs/431398.html

相关文章:

  • 专做山珍的网站流程优化
  • 长沙专业做网站公司有哪些郑州网站定制
  • php 网站建设抖音关键词优化
  • 洛阳建网站公司深圳网站优化推广
  • 哪个网站可以免费做推广制作网页
  • 武汉网站开发培训班国际新闻视频
  • 静态中英文网站怎么做注册google账号
  • 网站建设方案网站安全友情链接交换教程
  • 武汉专业商务网站建设软文推广文案
  • 小说网站怎么做javaseo免费优化网站
  • 泊头做网站的有哪些营销公司取名字大全
  • 织梦只显示网站首页软文代写新闻稿
  • 网站实名认证在哪品牌营销策略案例
  • 阿里巴巴属于b2b还是b2c独立站seo是什么
  • 万家灯火网站建设怎么样推广自己的公司
  • 建网站建网站产品推广软文500字
  • wordpress图标方块西安seo外包行者seo
  • 龙岩建设网站网络推广的手段
  • 宠物网站建设策划方案中国十大软件外包公司排名
  • 东营专业网站建设sem竞价推广公司
  • 汕头市企业网站建设哪家好目前好的推广平台
  • 免费空间网站源码百度移动端模拟点击排名
  • 如何查看网站 是哪家做的网络广告策划书
  • 保定专业做网站的公司引流推广效果好的app
  • vs2012 网站开发成都网站seo
  • 网站背景音乐怎么做企业课程培训
  • 做网站第二年要续费吗seo百度seo排名优化软件
  • icp网站线上推广引流渠道
  • 可以做烟草网站太原关键词优化公司
  • 橙云网站建设杭州关键词优化外包