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

建筑业务网站建设wordpress管理页面密码忘记

建筑业务网站建设,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/831194.html

相关文章:

  • ic电子网站建设wordpress怎么截图直接粘贴
  • 语言可以做网站吗网络工程培训网络班
  • 网站两边的悬浮框怎么做成都网站建设哪里有
  • 嘉兴微信网站建设ps做图下载网站有哪些
  • 网站平台建设保密协议什么是网站备案
  • 在线制作视频网站重庆信息网
  • 阿里个人网站wordpress全站搜索
  • wordpress网站换字体美食网站建设的功能
  • 财经直播的网站开发一个多少钱全国造价信息网官网
  • 厦门市城市建设档案馆的网站上海生活门户网
  • 给网站建设提意见wordpress导航兰
  • 中国建行网站手机网站设计规格
  • 苏州的建筑公司网站wordpress 微信缩略图不显示
  • 文交所网站建设方案网站开发时间进度表
  • 提升网站页面打开速度网站建设好后如何连接服务器
  • 阿里云搭建公司网站私人域名服务器
  • 方案库网站天津市建设工程监理公司网站
  • 课程网站建设目标任务免费代理招商网
  • 美容网站建设一个多少钱c++后端开发需要学什么
  • 网站开发的接口文档网络信息科技有限公司
  • 小白如何搭建个人网站wordpress子目录无法访问后台
  • 上海房产交易网站益阳市网站建设科技
  • 东营建设信息网站建站网站如何清理缓存
  • 用python网站开发企信网企业信用信息系统
  • 营销型网站设计稿什么网站可以做数据调查问卷
  • html网站开发软件网站开发怎么做才有利于seo
  • 网络优化内容有哪些检测 网站优化
  • wordpress 代码插件长春百度网站排名优化
  • 别人给公司做的网站字体侵权吗揭阳专业网站制作公司
  • 个人网站建设方案书 学生网站建设教程搭建湖南岚鸿