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

本文介绍了一种在VUE项目中实现文件下载的方法,并提供了一份详细的MIME类型对照表,便于开发者根据文件扩展名快速查找对应的二进制数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

let url = window.URL.createObjectURL(new Blob([文件流(一般为res.data)], { type: 'Blob类型' }))
let link = document.creatElement('a') // 创建a标签来下载
link.style.display = 'none'
link.href = url
link.setAttribute('download', '下载的文件名')
document.body.appendChild(link)
link.click()
document.body.removeChild(link)

在 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

<think>好的,用户想了解如何将Vue文件转换为Blob对象。首先,我需要回忆一下Vue文件的结构。Vue文件通常是单文件组件,包含模板、脚本和样式部分,扩展名为.vue。不过,Blob是浏览器中的二进制数据对象,通常用于处理文件上传或生成可下载内容。 用户的需求可能是在前端项目中动态生成Vue文件下载,或者需要将Vue组件的内容发送到服务器。那么,关键在于如何将Vue文件的内容转换为Blob。 首先,需要明确Vue文件的内容是文本格式,所以应该使用文本类型的BlobBlob构造函数接受数组作为参数,数组中的元素是文本内容,然后指定MIME类型,比如'text/plain'或者更具体的类型,但Vue文件没有特定的MIME类型,可能用'text/x-vue'或者其他,但通常用'text/plain'即可。 接下来,步骤应该是:获取Vue文件的字符串内容,然后用new Blob()创建Blob对象。例如,假设有一个Vue组件内容存储在变量里,将其放入数组,传入Blob构造函数,指定类型。 可能还需要考虑文件名和创建下载链接。比如,结合URL.createObjectURL生成临URL,再通过a标签触发下载。 需要注意的是,如果用户是想将已有的.vue文件从项目中读取并转换为Blob,可能需要使用FileReader API来读取文件,然后处理为Blob。不过通常情况下,如果是在浏览器环境中动态生成Vue内容,直接构造字符串即可。 另外,要确保用户了解Blob的用途,比如下载文件或通过FormData上传。可能需要给出具体的使用示例,包括创建Blob使用的完整流程。 可能的注意事项包括:字符编码是否正确,Blob的类型设置是否合适,以及如何处理可能存在的动态模板部分。例如,如果Vue文件中包含变量,是否需要先编译或处理,但转换为Blob本身不需要编译,只是文本处理。 最后,整理步骤,给出代码示例,并解释每个部分的作用,确保用户能够理解并正确实施。</think>将Vue文件组件(.vue)转换为Blob对象主要涉及以下步骤: ### 一、基本概念 1. **Vue文件**:包含`<template>`,`<script>`,`<style>`三部分的单文件组件 2. **Blob对象**:浏览器中表示二进制数据的对象,常用于文件下载、表单上传等场景 ### 二、转换流程 ```javascript // 1. 定义Vue组件内容 const vueContent = ` <template> <div>{{ message }}</div> </template> <script> export default { data() { return { message: 'Hello World' } } } </script> <style scoped> div { color: red; } </style> `; // 2. 创建Blob对象 const blob = new Blob([vueContent], { type: 'text/x-vue' // 或 'text/plain' }); // 3. 验证结果 console.log(blob instanceof Blob); // 输出: true ``` ### 三、典型应用场景 #### 1. 动态下载Vue文件 ```javascript function downloadVueFile(content, filename) { const blob = new Blob([content], { type: 'text/x-vue' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename.endsWith('.vue') ? filename : `${filename}.vue`; a.click(); URL.revokeObjectURL(url); } ``` #### 2. 通过AJAX上传 ```javascript const formData = new FormData(); formData.append('vueComponent', blob, 'component.vue'); axios.post('/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }); ``` ### 四、注意事项 1. **编码问题**:确保内容字符串使用UTF-8编码 2. **特殊字符**:模板中的反引号需转义,建议使用模板字符串包裹 3. **浏览器兼容**:Blob API兼容现代浏览器(IE10+) 4. **文件大小**:单个Blob最大支持约2GB(不同浏览器有差异) ### 五、高级技巧 **动态生成组件并转换**: ```javascript function generateVueBlob(options) { const { template, script, style } = options; const content = [ '<template>', template, '</template>', '<script>', script, '</script>', '<style scoped>', style, '</style>' ].join('\n'); return new Blob([content], { type: 'text/x-vue' }); } ``` 通过以上方法,可以在浏览器端轻松实现Vue文件Blob对象的相互转换,满足文件下载、动态组件上传等业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值