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

做拍客哪个网站好抚州seo排名

做拍客哪个网站好,抚州seo排名,网站建设主要工作流程,免费架设网站前端实现获取后端返回的文件流并下载 方法一:使用Axios实现文件流下载优点缺点 方法二:使用封装的Request工具实现文件流下载优点缺点 方法三:直接通过URL跳转下载优点缺点 结论 在前端开发中,有时需要从后端获取文件流&#xff0…

前端实现获取后端返回的文件流并下载

  • 方法一:使用Axios实现文件流下载
      • 优点
      • 缺点
  • 方法二:使用封装的Request工具实现文件流下载
      • 优点
      • 缺点
  • 方法三:直接通过URL跳转下载
      • 优点
      • 缺点
  • 结论

在前端开发中,有时需要从后端获取文件流,并将其下载到本地。本文介绍如何在前端实现此功能的不同的实现方法,并分析其优缺点

方法一:使用Axios实现文件流下载

使用Axios实现文件流下载的方法,本人亲测可以实现

import axios from 'axios';
import { getToken } from '@/utils/auth'handleExport() {// 接口调用获取文件axios({method: 'get',responseType: 'blob', // 指定响应类型为bloburl: this.GLOBAL.baseURL + '/api/v1/business/user/export',data: this.queryParams, // 导入文件一般都用FormData格式数据headers: { 'Authorization': 'Bearer ' + getToken() } // 传递token进行身份验证}).then(res => {if (res.code === 200) {// 导入成功this.downloadBinaryFile(res.data, '导入失败后下载的报错文件')} else {// 输出失败信息}}).catch(error => {console.error('下载失败', error);});
},/*** 将二进制文件下载到本地,保存为excel文件* @param {*} binFile 二进制文件流* @param {*} fileName 下载后的文件名* @param {*} blobType 文件格式,默认为 "application/vnd.ms-excel"*/
downloadBinaryFile(binFile, fileName, blobType = "application/vnd.ms-excel") {// 创建 Blob 对象,包含二进制文件流和文件类型const blobObj = new Blob([binFile], { type: blobType });// 创建下载链接元素const downloadLink = document.createElement('a');// 处理不同浏览器的 URL 兼容性let url = window.URL || window.webkitURL; url = url.createObjectURL(blobObj); // 创建文件 URL// 设置下载链接属性downloadLink.href = url;downloadLink.download = fileName;// 将下载链接添加到文档中并触发点击事件document.body.appendChild(downloadLink);downloadLink.click();// 移除下载链接并释放 URL 对象document.body.removeChild(downloadLink);window.URL.revokeObjectURL(url);
}

实现的效果

image-20240613095753872

优点

  • 支持传递Token进行身份验证,安全性较高
  • 支持POST请求,可以将参数放在请求体中,避免URL长度限制及参数暴露

缺点

  • 实现相对复杂,需要手动创建和管理Blob对象及下载链接

方法二:使用封装的Request工具实现文件流下载

接下来介绍使用封装的Request工具实现文件流下载的方法

import request from '@/utils/request'// 日志管理收藏、浏览、下载导出接口
export function exportUserOperateAdmin(data, headers) {return request({url: '/business/user/export',method: 'get',data: data,headers: headers})
}// 调用导出接口
exportUserOperateAdmin(this.queryParams, { responseType: 'blob' }).then(response => {console.log(response)const url = window.URL.createObjectURL(new Blob([response.data])) // 创建下载链接const link = document.createElement('a')link.href = urllink.download = '全文导入模板.xlsx' // 设置文件名document.body.appendChild(link)link.click() // 触发下载document.body.removeChild(link) // 下载后移除元素}
).catch(error => {console.error('下载失败', error)this.loading = false // 停止加载,隐藏加载状态
})

优点

  • 封装后的Request工具调用简单,代码更简洁
  • 支持传递Token进行身份验证,安全性较高

缺点

  • 实现相对简单,但仍需手动处理Blob对象及下载链接

方法三:直接通过URL跳转下载

最后介绍直接通过URL跳转实现文件下载的方法

const baseurl = this.GLOBAL.baseURL
// 拼接上导出的地址,如果接口还需要其他参数,都可以直接拼接上
let url = baseurl + '/api/v1/business/user/export';
console.log(url)
alert(url)
// 第二个参数'_self'表示在当前页下载,不打开新的页面
window.open(url, '_self')

优点

  • 实现简单,不需要处理Blob对象及下载链接
  • 适合下载无需身份验证或参数简单的文件

缺点

  • 无法传递Token进行身份验证,安全性较低
  • 参数放在URL中不安全,且可能会导致URL过长
  • 处理中文参数可能会出现乱码问题

结论

以上三种方法各有优缺点,实际开发中可以根据具体需求选择合适的方法。

如果需要传递Token进行身份验证并确保下载安全性,推荐使用方法一或方法二

如果只是简单下载无需验证的文件,可以考虑使用方法三

http://www.khdw.cn/news/51096.html

相关文章:

  • 政府网站建设背景b站推广网站2024mmm
  • 那里可以做网站2023年又封城了
  • 亚马逊跨境电商开店有风险吗赣州网站seo
  • 阳谷聊城网站优化宁波seo推广优化公司
  • 外贸网站建设软件有哪些南昌seo
  • 类似于美团的网站怎么做的百度网盘人工客服
  • 金山网站建设关键词排名专业全网优化
  • vs做网站各种控件的使用市场调研怎么写
  • 沈阳网站建设聚艺科技站长工具app下载
  • 请科技公司做网站需要注意什么免费的行情网站
  • 高校后勤网站建设要求及内容搜索引擎入口大全
  • 昆明网站建设frf哈尔滨新闻头条今日新闻
  • 网站站内优化怎么做免费注册二级域名的网站
  • 网站建设哪些网站可以网址seo关键词
  • 南通购物网站建设软文素材网站
  • 企业网站建设进什么科目核算南京百度seo排名
  • 网站建设都需要哪些书腾讯企点官网
  • 柳州网站建设22排行榜
  • 做移动端网站seo顾问是什么职业
  • 为什么别的电脑能打开的网站我的电脑打不开微信引流被加软件
  • 法制网站建设问卷调查外链图片
  • 建设一个企业网站需要多少钱百度竞价关键词出价技巧
  • wordpress商城建站教程seo的优化原理
  • 沈阳做公司网站的公司成都网站seo
  • 网站更改备案主体今日搜索排行榜
  • 怎样做医疗保健网站百度推广怎么提高关键词排名
  • 网站开发组播地址的作用百度收录链接
  • 聊城网站开发培训域名注册需要什么条件
  • 如何自建公司网站so导航 抖音
  • 建站工具 wordpress如何在国外推广自己的网站