JavaScript将后端获取到的byte数组转为文件

这篇具有很好参考价值的文章主要介绍了JavaScript将后端获取到的byte数组转为文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

一般情况下,在我们写项目的时候,都会从后端获取到文件的数据,要么是base64,要么是byte数组,然后我们再通过拿到的数据额外做出来转换为文件的,那么这次教大家如何通过JavaScript将后端拿到的byte数组转为文件

步骤

首先,我们需要有一个前端界面触发方法,来一个简单的按钮

<button @click='byteToFile'>byte转文件</button>

上面,我写了一个按钮,如何绑定了一个方法名:byteToFile


然后,我们需要拿到后端传给我们的byte数组:

let bytes = // 后端byte数组

形式如:
byte数组转文件,javascript,前端,byte数组转文件,blob,File

接着下一步,为了保证转换出来的文件能够正常的读取,我们需要知道需要把文件转换为什么格式
于是我这边写一个常用的读取文件格式的方法供大家参考:

// 传入一个字符串,返回对应的文件格式类型
        extToMimes(ext) {
            let type = undefined;
            switch (ext) {
            		// 对应图片格式jpg
                case 'jpg':
                    type = 'image/jpeg'
                    // 对应图片格式png
                case 'png':
                    type = 'image/png'
                    // 对应图片格式jpeg
                case 'jpeg':
                    type = 'image/jpeg'
                    break;
                    // 对应图片格式gif
                case 'gif':
                	type ='image/gif'
                	break;
                	// 对应图片格式bmp
                case 'bmp:
                	type = 'image/bmp'
                	break;
                	// 对应文本格式txt
                case 'txt':
                    type = 'text/plain'
                    break;
                    // 对应表格格式xls
                case 'xls':
                    type = 'application/vnd.ms-excel'
                    break;
                    // 对应word文档doc格式
                case 'doc':
                    type = 'application/msword'
                    break;
                    // 对应文档格式pdf
                 case 'pdf':
                 	type = 'application/pdf'
                 	break;
                    // 对应表格格式xlsx
                case 'xlsx':
                    type = 'application/vnd.ms-excel'
                    break;
                    // 对应表格格式csv
                case 'csv':
                    type = 'text/csv'
                    break;
                    // 对应的视频格式一般是MPEG-4或者H.264编码的MP4格式
                case 'mp4':
                	type = 'video/mp4'
                	break;
                	// 对应的视频格式一般是AVI格式
               	case 'avi':
               		type = 'video/x-msvideo'
               		break;
               		// 对应的视频格式一般是Windows Media Video格式
               	case 'WindowsMediaVideo':
               		type = 'video/x-ms-wmv'
               		break;
               		// 对应的视频格式一般是MOV格式,由苹果公司开发的
               	case 'mov':
               		type = 'video/quicktime'
               		break;
               		//  对应的视频格式一般是Flash视频格式,由Adobe公司开发的
               	case 'flash':
               		type = 'video/x-flv'
               		break;
               		// 对应的视频格式一般是MKV格式,开源免费的多媒体容器格式
               	case 'mkv':
               		type = 'video/x-matroska'
               		break;
               		// 对应音频格式mp3
               	case 'mp3':
               		type = 'audio/mpeg'
               		break;
               		// 对应音频格式wav
               	case 'wav':
               		type = 'audio/wav'
               		break;
               		// 对应音频格式flac
               	case 'flac':
               		type = 'audio/flac'
               		break;
               		// 对应音频格式aac
               		type = 'audio/aac'
               		break;
               		// 对应音频格式WMA
               	case 'wma':
               		type = 'audio/x-ms-wma'
               		break;
                default:
                	type = 'text/plain'
                	break;
            }
            return type;
        },

文件格式有了之后正式的将byte数组转文件

/**
byte : 后端接收到的byte数组
_type : 文件类型
name : 文件名称,不带后缀
*/
        byteToFile(byte,_type,name) {
        	// 调用上面写的方法,读取获取到文件格式
            let fileType = this.extToMimes(_type);
            // 将后端的byte数组进行处理
            const bytes = new Uint8Array(byte);
            // 将byte数组转换为blob类型
            var blob = new Blob([bytes],{type: fileType});
            console.log("转换后文件:",blob)
            // 以上blob可直接拿来使用做自己的逻辑操作
            // 以下将blob转为File文件类型
            blob1.lastModifiedDate = new Date(); // 使用当前时间作为文件的修改时间
            blob1.name = name; // 指定文件名
            var file = new File([blob], name);
            console.log("File类型文件:",file)
            return file;
        },

假如你不需要获取转换后的文件,想直接下载,参考如下逻辑

/**
byte : 后端接收到的byte数组
_type : 文件类型
name : 文件名称,不带后缀
*/
        byteToFile(byte,_type,name) {
        	// 调用上面写的方法,读取获取到文件格式
            let fileType = this.extToMimes(_type);
            // 将后端的byte数组进行处理
            const bytes = new Uint8Array(byte);
            // 将byte数组转换为blob类型
            var blob = new Blob([bytes],{type: fileType});
            // 创建一个a标签,设置不可见
            var eleLink = document.createElement('a');
            eleLink.download = name;
            eleLink.style.display = 'none';
            // 将文件加入到a标签
            eleLink.href = URL.createObjectURL(blob);
            // 自动触发点击
            document.body.appendChild(eleLink);
            eleLink.click();
            // 最后移除a标签
            document.body.removeChild(eleLink);
        },

结语

以上就是byte数组转文件的过程文章来源地址https://www.toymoban.com/news/detail-585176.html

到了这里,关于JavaScript将后端获取到的byte数组转为文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C#byte数组获取每一位值

    获取byte中每一位的值 获取int16中其中某几位的数值 bit 内容   11-15 预留   10 值7   6-9 值6   5 值5   4 值4   3 值3   2 值2   0-1 值1   public UInt16 ToByte() { UInt16 ret = 0x00; ret = (UInt16)(ret | ((UInt16)Waypoint 9)); ret = (UInt16)(ret | ((UInt16)Side 8)); ret = (UInt16)(ret | ((UInt16)Head 7)); ret = (UInt16)(ret

    2024年02月13日
    浏览(37)
  • 如何在 JavaScript 中将数组转为对象

    首先,我们需要明白对象具有键和值。 如果我们想把某个东西转换成一个 对象 ,我们需要传递具有这两个要求的东西:键和值。 满足这些要求的参数有两种类型: 具有嵌套键值对的数组 Map 对象 这是一个带有键值对的嵌套数组 当我们应用它时,我们可以使用 Object.fromEnt

    2024年02月01日
    浏览(56)
  • MongoDB 获取数组中匹配到的第一个元素对象

    例如当前test库中的grade集合中有两条文档数据,如下图所示: 相关的两个实体映射类如下: 

    2024年02月12日
    浏览(40)
  • PowerShell 获取某目录下所有的文件、文件夹,同时对获取到的文件路径字符串进行替换处理

    前言: 为了将Windows系统下的Java编译文件与linux服务器上的文件进行比较,故进行此文件路径的获取及路径处理。 在只有文件路径 而没有实际文件的情况下的比较。 代码如下: 输出文件(grepKekka.csv): 输出文件(grepKekka1.csv): 输出文件(grepKekka2.csv): 结语: 为了将

    2024年02月13日
    浏览(57)
  • vue项目将后端返回的数据中P标签删除并换行展示

    实现效果: 1.调取接口拿到后端数据后,其实this.lists里的contentDetails为我所要展示的字段 关键代码this.lists[i].contentDetails.replace(/(/)?p/g, \\\'br/\\\') 将P标签替换为br/ 2.用v-html渲染

    2024年01月24日
    浏览(50)
  • 【javascript】js获取数组中数值最大的数

    一、借助apply()的参数,获得最大值 由于max()里面参数不能为数组,所以借助apply(funtion,args)方法调用Math.max(),function为要调用的方法,args是数组对象,当function为null时,默认为上文,即相当于apply(Math.max,arr) 二、借助call()的参数,获得最大值 call()与apply()类似,区别是传入参数

    2024年02月11日
    浏览(41)
  • JavaScript 中获取数组最后一个元素3种方法及性能

    当需要从 JavaScript 中的数组中获取最后一个元素时,有多种选择,本文将提供 3 种可用方法。 1. 数组 length 属性 length 属性返回数组中元素的数量。从数组的长度中减去 1 得到数组最后一个元素的索引,使用它可以访问最后一个元素。从长度中减去 1 的原因是,在 JavaScript 中

    2024年02月06日
    浏览(51)
  • JavaScript获取数组对象里面的键(key)和值(value)

    知识专栏 专栏链接 JavaScript知识专栏 https://blog.csdn.net/xsl_hr/category_12024214.html?spm=1001.2014.3001.5482 有关JavaScript的相关知识可以前往JavaScript知识专栏查看复习!! 在后台管理系统的项目开发中,对于 后端接口返回的数据进行处理 是一件很重要的事情。有时候返回的值是 json格式

    2023年04月15日
    浏览(43)
  • 【JavaScript】函数 ⑥ ( 使用 arguments 获取所有实参 | arguments 内置对象 | 伪数组概念 )

    在 定义 JavaScript 函数 时 , 有时 不确定 形参的个数 , 形参写少了不够用 , 写多了又很浪费 , 这里 推荐使用 arguments 内置参数对象 ; 在 JavaScript 的 每个函数 的 内部都可以访问 内置的 arguments 对象 , 该对象中 包含了 调用者 传递给函数的所有 实参 , 即使 在 函数 形参 中没有明

    2024年04月22日
    浏览(46)
  • 【JavaScript】JS能力测试题:数组扁平化 | 判断质数 | 获取字符串的长度

    💎个人主页: 阿选不出来 💎个人简介: 大三学生,热爱Web前端,随机掉落学习碎片 💎目前开发的专栏: JS 🍭Vue🍭React🍭 💎祝愿今天的你比昨天更加博识了! 题目描述 请补全JavaScript代码,要求将数组参数中的多维数组扩展为一维数组并返回该数组。 注意: 数组参数中仅

    2024年02月07日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包