用文件流下载文件( Blob)时各种类型文件的 type 整理

31 篇文章 15 订阅

在 VUE 项目中,常用 Blob 二进制数据做文件下载的功能,涉及不同后缀的文件,但是每当设置转换的文件类型的时候就很头疼,因为这东西平时也不怎么常见,这里我参考 Blob 配置整理了一份,方便以后使用。

拓展名文件类型MIME类型
.aacAAC 音频audio/aac
.abwAbiWord 文档application/x-abiword
.arc存档文档(多个文件嵌入)application/x-freearc
.aviAVI: 音频视频交错video/x-msvideo
.azw亚马逊Kindle电子书格式application/vnd.amazon.ebook
.bin任何类型的二进制数据application/octet-stream
.bmpWindows OS/2位图图形image/bmp
.bzBZip 存档application/x-bzip
.bz2BZip2 存档application/x-bzip2
.cshC-Shell 脚本application/x-csh
.cssCSStext/css
.csvCSVtext/csv
.docMicrosoft Wordapplication/msword
.docxMicrosoft Word (OpenXML)application/vnd.openxmlformats-officedocument.wordprocessingml.document
.eotMS嵌入式OpenType字体application/vnd.ms-fontobject
.epub电子出版物(EPUB)application/epub+zip
.gifGIFimage/gif
.htm超文本标记语言 (HTML)text/html
.html超文本标记语言 (HTML)text/html
.icoIcon 格式image/vnd.microsoft.icon
.icsiCalendar 格式text/calendar
.jarJava Archive (JAR)application/java-archive
.jpegJPEG 图片image/jpeg
.jpgJPEG 图片image/jpeg
.jsJavaScripttext/javascript
.jsonJSON 格式application/json
.jsonldJSON-LD 格式application/ld+json
.mid乐器数字接口(MIDI)audio/midi audio/x-midi
.midi乐器数字接口(MIDI)audio/midi audio/x-midi
.mjsJavaScript 模块text/javascript
.mp3MP3 音频audio/mpeg
.mpegMPEG 视频video/mpeg
.mpkg苹果安装程序包application/vnd.apple.installer+xml
.odpOpenDocument演示文档application/vnd.oasis.opendocument.presentation
.odsOpenDocument 电子表格文件application/vnd.oasis.opendocument.spreadsheet
.odtOpenDocument 文本文档application/vnd.oasis.opendocument.text
.ogaOGG 音频audio/ogg
.ogvOGG 视频video/ogg
.ogxOGGapplication/ogg
.otfOpenType 字体font/otf
.png便携式网络图形(PNG)image/png
.pdfPDFapplication/pdf
.pptMicrosoft PowerPointapplication/vnd.ms-powerpoint
.pptxMicrosoft PowerPoint (OpenXML)application/vnd.openxmlformats-officedocument.presentationml.presentation
.rarRAR 存档application/x-rar-compressed
.rtf富文本格式 (RTF)application/rtf
.shBourne shell 脚本application/x-sh
.svg可缩放矢量图形 (SVG)image/svg+xml
.swf小型web格式 (SWF) or Adobe Flash documentapplication/x-shockwave-flash
.tarTape 归档(TAR)application/x-tar
.tif标记图像文件格式 (TIFF)image/tiff
.tiffTagged Image File Format (TIFF)image/tiff
.ttfTrueType 字体font/ttf
.txtTexttext/plain
.vsdMicrosoft Visioapplication/vnd.visio
.wav波形音频格式audio/wav
.webaWEBM 音频audio/webm
.webmWEBM 视频video/webm
.webpWEBP 图片image/webp
.woff网页开放字体格式 (WOFF)font/woff
.woff2网页开放字体格式 (WOFF)font/woff2
.xhtmlXHTMLapplication/xhtml+xml
.xlsMicrosoft Excelapplication/vnd.ms-excel
.xlsxMicrosoft Excel (OpenXML)application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xmlXMLapplication/xml(普通用户不可读)、text/xml(普通用户可读)
.xulXULapplication/vnd.mozilla.xul+xml
.zipZIPapplication/zip
.3gp3GPP audio/video 容器video/3gpp、audio/3gpp(不含视频)
.3g23GPP2 audio/video 容器video/3gpp2、audio/3gpp2(不含视频)
.7z7-zipapplication/x-7z-compressed

以上列表里面查不到的请移步:Media Types

  • 30
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: axios是一个基于Promise的HTTP客户端库,支持在浏览器和Node.js中发送HTTP请求。当使用axios下载文件,如果需要指定响应的数据类型为blob,则可以使用responseType配置选项。 在使用responseTypeblob,如果后端出现错误,可以通过catch捕获错误信息并处理。例如: ```javascript axios({ method: 'get', url: '/download/file', responseType: 'blob' }).then((response) => { // 处理下载文件 }).catch((error) => { // 处理捕获到的错误信息 }); ``` 在上述代码中,当后端出现错误,会触发catch块中的代码,可以在这里处理错误信息,例如提示用户下载失败或重新尝试下载等操作。 ### 回答2: 在使用axios进行文件下载请求,我们可以通过设置responseTypeblob来获取文件的二进制数据。然而,当后端返回的数据不是预期的文件类型,可能会出现错误。为了捕获后端错误问题,我们可以使用try-catch语句来处理异常。 首先,我们需要设置axios的响应拦截器,用于在请求返回捕获错误。在拦截器中,我们将判断返回数据的类型,如果不是预期的blob类型,则抛出一个自定义的错误。 ```javascript axios.interceptors.response.use( response => { if (response.config.responseType === 'blob' && response.data.type !== 'application/octet-stream') { throw new Error('后端返回数据异常') } return response }, error => { return Promise.reject(error) } ) ``` 接下来,在发起文件下载请求,我们可以使用try-catch语句来包裹axios请求,并处理可能抛出的错误。 ```javascript try { const response = await axios.get('/download', { responseType: 'blob' }) // 文件下载成功的逻辑处理 } catch (error) { // 捕获并处理后端错误 console.error(error.message) } ``` 这样,当后端返回的数据不是预期的blob类型,我们就可以捕获到错误,并进行相应的处理,例如输出错误信息到控制台。 注意,由于axios是基于Promise的异步请求库,我们使用了async/await来进行异步处理。当然,你也可以使用.then()来处理异步请求。以上代码只是一个简单示例,你可以根据自己的需求进行进一步的优化和处理。 ### 回答3: 在使用axios进行文件下载请求,可以设置responseTypeblob来获取二进制数据作为响应。但是在这种情况下,由于后端错误的情况下,返回的响应数据类型可能依然是blob,而不是正常的json数据。因此,需要在前端代码中进行相应的处理来捕获后端错误。 首先,在axios请求中设置responseTypeblob: ```javascript axios.get(url, { responseType: 'blob' }) ``` 之后,在返回的响应中,可以通过判断响应的Content-Type来确定响应数据类型。如果是对应的错误类型,则可以通过读取blob数据并进行相应的处理。 ```javascript axios.get(url, { responseType: 'blob' }).then(response => { const contentType = response.headers['content-type']; if (contentType === 'application/json') { // 正常情况 // 处理响应数据 } else { // 错误情况 response.blob().then(blobData => { // 处理错误数据 }); } }).catch(error => { // 请求错误 console.error(error); }); ``` 在错误情况下,使用response.blob()将blob数据转换为对应的Blob对象,并可以进行进一步的操作。比如,可以读取该Blob对象中的错误信息,并根据具体情况进行相应的处理,比如提示错误信息给用户或者进行其他的业务操作。 需要注意的是,设置responseTypeblob,后端返回的响应必须包含相应的Content-Type头部信息,以便前端能正确判断响应数据类型。否则,需要与后端进行沟通,确保正确返回对应的Content-Type信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值