首页 > 其他分享 >前端数据流组装指定格式的文件下载

前端数据流组装指定格式的文件下载

时间:2023-12-31 15:23:05浏览次数:25  
标签:case 文件 return 组装 break application pdf 数据流 格式

有的时候,我们从后端获取了文件数据,需要在前端组合成指定格式的文件,并下载。

组合文件,除了数据,还需要规定格式,才知道组合成什么格式的文件。

主要代码如下:

/*
*  responseText 后端获取的文件数据
*  这里以 pdf 格式的文件举例,设置 type 为 pdf 文件需要的类型
* */
const blobFile = new Blob([responseText],{
    type: "application/pdf"
});
// 创建 blob 对象的 url 对象
const objectUrl = window.URL.createObjectURL(blobFile);

// 创建 a 标签元素,设置 a 标签的链接地址 和 下载文件名
const aElement = document.createElement("a");
aElement.href = objectUrl;
aElement.download = "list.pdf";
// 触发 a 标签的点击事件
aElement.click();

// url 使用完,撤销url对象
window.URL.revokeObjectURL(objectUrl);

上面代码以 pdf 格式的文件举例,常用的文件格式还有很多,如果要获取后端传过来的文件格式的对应 type,还可以通过一个函数来判断并返回正确的type值,如下:

/*
* fileSuffix 文件名的后缀
* */
function getMIME( fileSuffix ){
    switch ( fileSuffix ){
        case 'txt': return 'text/plain'; break;
        case 'doc': return 'application/msword'; break;
        case 'xls': return 'application/vnd.ms-excel'; break;
        case 'ppt': return 'application/vnd.ms-powerpoint'; break;
        case 'pdf': return 'application/pdf'; break;
        case 'gif': return 'image/gif'; break;
        case 'png': return 'image/png'; break;
        case 'jpg': return 'image/jpeg'; break;
        case 'jpeg': return 'image/jpeg'; break;
        case 'bmp': return 'image/bmp'; break;
        case 'avi': return 'video/x-msvideo'; break;
        case 'mvb': return 'application/x-msmediaview'; break;
        case 'htm': return 'text/html'; break;
        case 'html': return 'text/html'; break;
        case 'svg': return 'image/svg+xml'; break;
        case 'tar': return 'application/x-tar'; break;
        case 'zip': return 'application/zip'; break;
        case 'exe': return 'application/octet-stream'; break;

        default: return '';
    }
}

更多MIME类型可以参考文档:MIME 类型(IANA 媒体类型)

上面例子中只是简单的使用了 Blob 对象,如果了解更多的使用方法,可以参考:Blob

可以发现上面组建文件的方法比较原始,也比较麻烦,我们可以使用更简单的方法:第三方库,比如 FileSaver 。

只需要安装一下:

npm install file-saver --save

如果你使用 TypeScript,需要执行下面的命令:

npm install @types/file-saver --save-dev

就可以使用了:

import { saveAs } from 'file-saver';

let FileSaver = require('file-saver');
let blobFile = new Blob(responseText, { type: "text/plain;charset=utf-8" });
  // saveAs: 触发文件下载,同时指定下载的文件名
FileSaver.saveAs( blobFile, "hello.txt");

 

标签:case,文件,return,组装,break,application,pdf,数据流,格式
From: https://www.cnblogs.com/wuxxblog/p/17937524

相关文章

  • java按格式导出
    Java按格式导出在Java编程中,我们经常需要将数据导出为特定的格式,例如CSV、Excel等。本文将介绍如何使用Java按照指定的格式导出数据,并通过代码示例说明。什么是数据导出?数据导出是将计算机系统中的数据以某种格式输出到外部设备或文件中的过程。通过数据导出,我们可以将计算机中......
  • IP模块组装网络包及转发网络包链路
    引言之前协议栈系列的文章讲解了连接,收发网络包,断开连接这些操作协议栈模块的处理,但是协议栈是上层接下来会委托ip模块进行真正的处理。网络包网络包的组成网络包由头部的控制信息和头部后面的传输数据组成。控制信息代表了包要发往的目的地,传输数据就是要发送的数据网......
  • 结合 element -Plus组件库,压缩图片大小,限制图片格式
    业务背景:业务上需求满足上传的图片不能太大,但是有时候上传的图片确实超过了限制大小,所以前端这边可以将图片压缩再上传,亦或者是上传给后端接口的图片只能是指定格式,我们前端需要将图片后缀转化,也可以处理!封装的使用方法如下:使用canvas对图片进行压缩处理:/**压缩图片......
  • Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式
    一、ImageMagick简介ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换,可以处理超过100种图像格式,包括流行的TIFF,JPEG,GIF,PNG,PDF以及PhotoCD等格式。对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Rub......
  • 抖音直播带货数据流量
    打微付费比较容易有利润直播间想要自然流量,那么自然流量需要有成交。所以如果一直自然流有成交那么一直都会有自然流量小风车考核的是人气数据起号方式1自然流2微付费(小店)3纯付费自然流起号需要的条件1)应季的爆品2)性价比3)账号有大的场观 场景4)会拉自然流的主播 什......
  • [日志] lo4j2之自定义日志格式变量
    1PatternLayout/LogEventPatternConverter:自定义日志格式及格式变量在Log4j或Logback等Java日志框架中,PatternLayout类允许你定义日志输出的格式。PatternLayout通过一系列的转换器(PatternConverter)来定义输出的样式。其中,LogEventPatternConverter(日志格式化......
  • YOLOv5:将模型预测结果保存为Labelme格式的Json文件
    YOLOv5:将模型预测结果保存为Labelme格式的Json文件前言前提条件相关介绍实验环境YOLOv5:将模型预测结果保存为Labelme格式的Json文件代码实现进行预测输出结果前言由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专......
  • C# 输出的格式转换,占位/补位,字符串拼接、字符串内插法
    //“0”描述:占位符,如果可能,填充位     Console.WriteLine(string.Format("{0:000000}",1234));//结果:001234     //“#”描述:占位符,如果可能,填充位     Console.WriteLine(string.Format("{0:######}",1234));//结果:1......
  • 代码整洁之道:格式、对象和数据结构、错误处理
    来源:博客园(作者-BNDong)格式格式目的代码格式不可忽略,必须严肃对待。代码格式关乎沟通,而沟通是专业开发者的头等大事。(每种语言基本都有它自己的推荐标准,比如PHP的PSR代码规范,对格式做了详细的定义)垂直格式单文件。书中的建议是,单文件的代码量不易过大。短文件通常比长......
  • vue项目中使用tinymce富文本编辑器实现图片上传/粘贴格式
    前言最近因为公司项目的后台管理端需要实现编辑器功能,一方面满足编辑各类文章内容需求,另一方面要自己编辑一些课程相关的介绍,于是就花了一些时间对比体验现有的一些开源的编辑器。编辑器之间的简单比较UEditor:基本满足各种需求,依赖于jquery但是已经不再维护了,实现上传图片等需......