js根据base64下载文件

这篇具有很好参考价值的文章主要介绍了js根据base64下载文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目中有个下载模板的需求,接口直接给返回的是一个base64,如图

js 下载base64,js,vue,javascript,前端,开发语言
这里的bytes不是流格式,而是一个base64格式的,这就导致我们需要先将base64转为了流,然后通过new Blob方式下载文件就行,下面看代码

// base64转换
const base64ToArrayBuffer = (base64) => {
  var binaryString = window.atob(base64)
  var binaryLen = binaryString.length
  var bytes = new Uint8Array(binaryLen)
  for (var i = 0; i < binaryLen; i++) {
    var ascii = binaryString.charCodeAt(i)
    bytes[i] = ascii
  }
  return bytes
}

定义了一个base64转二进制流的方法,接下来开始根据得到的二进制流下载文件(new Blob登场)

const saveByteArray = (reportName, byte) =>{
   const link = document.createElement('a') // 创建a标签
    const blob = new Blob([byte], {
      type: 'application/vnd.ms-excel;charset=utf-8',
    }) // response就是接口返回的文件流
    const objectUrl = URL.createObjectURL(blob)
    link.href = objectUrl
    link.download = reportName
    link.click() // 下载文件
    URL.revokeObjectURL(objectUrl)
}

saveByteArray接收俩个参数 reportName,byte。reportName是下载文件的名称,byte是二进制流,接下来就是根据请求后端的接口获取模板信息(也就是base64)
js 下载base64,js,vue,javascript,前端,开发语言

const uploadfile = async () => {
    let params = { // 请求参数
      dataName: props.dataName,
      dataId: props.dataId,
    }
    let res = await quotaDataDownloadTemplate({ data: params })
    // 这个接口返回的res就是上面图中的信息具体
    const { bytes, fileName } = res
    const sampleArr = base64ToArrayBuffer(bytes); // 这里先调用base64ToArrayBuffer将base64转为二进制流
    saveByteArray(fileName, sampleArr) // 然后将文件名称和数据流直接给到saveByteArray方法进行下载
}

齐活儿,如果后端的模板信息返回的直接就是流数据,那么我们就可以直接通过saveByteArray方法来下载了,就不需要base64ToArrayBuffer了,所有这里需要和接口人员确定好他返回的是二进制流还是base64就行文章来源地址https://www.toymoban.com/news/detail-581612.html

到了这里,关于js根据base64下载文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JS】前端base64转图片File对象

    base64ToFile.js

    2024年02月05日
    浏览(56)
  • 【js】js前端技巧之图片格式转换(File、Blob、base64):

    一、类型简介 BLOB(binary large object) : 二进制大对象,是一个可以存储二进制文件的容器。 在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。 属性名称 读/写 描述 size 只读 Blob 对象中所包含数据的大小(字节)。 type 只读 一个字符串,表明该Blob对象所包含数据

    2024年02月07日
    浏览(53)
  • 前端 img图片如何 展示 base64 格式(并且下载到本地)

    如题:最近在做项目发现页面上有些图片是动态获取的,也就是后台给我们返回图片的存放地址,一般都是放在服务器上的某个位置,我们直接拿到渲染一下就行了,(前提是不存在跨域问题), 但是由于项目特殊性,后台使用了Python 渲染出来的图片是svg格式的图片,并且

    2024年02月09日
    浏览(59)
  • vue3管理系统中后台返回pdf格式的文件流,前端如何预览?以及uniapp微信小程序中后台返回的base64位的pdf文件如何预览?

    后台返回的是base64格式的pdf文件,首先需要解析base64文件的插件 image-tools 1 安装并引入插件 2 封装预览pdf的函数 3 调用接口获取数据

    2024年01月18日
    浏览(87)
  • java和js实现前端加密后端解密,后端加密前端解密(Base64)

    目录 1.前端加密后端解密 2.后端加密前端解密 在前端和后端数据传输时,常常涉及到隐私数据的传输(例如用户名和密码),这时,我们就需要对隐私数据进行加密解密 1.前端加密后端解密         1.1 前端jquery实现         1.2后端 2.后端加密前端解密         2.1后端加密

    2024年02月16日
    浏览(56)
  • 前端base64转file文件方法

    有这样一种场景,比如canvas截取部分dom作为图片,上传到服务器,而canvas截取的图片返回的是base64字符串,而服务器接收的是file文件。因此我们需要将base64字符串转成file文件,存储到服务器中。 方法一:通过new File(),将base64直接转成file文件。 (此方法需要考虑浏览器兼容

    2024年02月11日
    浏览(40)
  • jmeter下载base64加密版pdf文件

    如下图所示,接口jmeter执行后, 返回一串包含大小写英文字母、数字、+、/、=的长字符串 ,直接另存为pdf文件后,文件有大小,但是打不开;另存为doc文件后,打开可以看到和接口响应一致的长字符串。 仔细查看该接口具体信息,感觉和 ContentType: application/octet-stream、Cont

    2024年02月22日
    浏览(48)
  • 前端将base64图片转换成file文件

    1、base64转成file具体代码 文件转换过程: 2、代码解析 ​ 该方法涉及知识点较多,首先因为base64的前缀信息部分与文件内容部分是通过 , 进行连接的, data:image/***;base64(前缀信息),xxxxx(文件内容) ,所以利用 split() 方法对base64进行分割,将前缀文件信息,与文件内容分隔开。得

    2024年01月20日
    浏览(55)
  • 前端常用的三种加密方式(MD5、base64、sha.js)

    作为一名优秀的前端开发工程狮,保障用户的信息安全、密码义不容辞,废话不多说,由我来介绍三种日常开发中经常用到的加密方式。 介绍: MD5中文含义为信息-摘要算法5,就是一种信息摘要加密算法,可以将数据转译为另一固定长度值 特点: 压缩性:任意长度的数据,

    2024年02月06日
    浏览(54)
  • js中实现 base64 与文件格式互转

    通过 reader.readAsDataURL 方法实现 先将 base64 转换成 blob ,再将 blob 转换成 file 文件 👇觉得有帮助的朋友可以支持下作者哦,您的鼓励是我创作的最大动力,如有开发问题可联系作者

    2024年01月20日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包