首页IT科技vue前端文件流下载文件(vue2文件流下载成功后文件格式错误、打不开、内容缺失)

vue前端文件流下载文件(vue2文件流下载成功后文件格式错误、打不开、内容缺失)

时间2025-06-17 09:41:19分类IT科技浏览7401
导读:项目场景 后端采用文件流的方式将文件信息发送给前端,前端需要接收相应的流信息做出对应的操作,如接收到图片、pdf将进行预览模式,将接收到压缩包形式的则进行文件下载。后端对相应的文件进行不同的传输方式进行传输,前端则需要接收相应的信息并进行操作。...

项目场景

后端采用文件流的方式将文件信息发送给前端                ,前端需要接收相应的流信息做出对应的操作                         ,如接收到图片                、pdf将进行预览模式        ,将接收到压缩包形式的则进行文件下载                 。后端对相应的文件进行不同的传输方式进行传输        ,前端则需要接收相应的信息并进行操作                        。

问题描述

当收到图片                         、pdf则可以正常的进行操作                         ,当接收到压缩包文件流时候可以正常下载                ,但是下载后        ,下载的文件损坏了        。

原因分析

由于文件不同                         ,所以接收方式也是有区别的                ,普通的图片        、pdf可以采用日常的请求方式去请求,而压缩包的请求需要加上接收数据格式responseType:为blob                         ,默认的responseType为""                 。

解决方案

1        、图片的解决方式

export const getFileImg = row => { return request({ url: /api/blade-resource/oss/endpoint/get-file-secret, //请求路径 method: get, //请求模式 params: row, //请求参数 }) }

2                         、文件流的解决方式

export const getFileZip = row => { return request({ url: /api/blade-resource/oss/endpoint/get-file-secret, //请求路径 method: get, //请求模式 params: row, //请求参数 responseType: blob, }) }

3                、文件下载

/** * 下载压缩包文件 * @param {blob} fileArrayBuffer 文件流 * @param {String} filename 文件名称 * @param {String} fileType 文件格式 */ export const downloadZip = (fileArrayBuffer, filename, fileType) => { let data = new Blob([fileArrayBuffer], { type: fileType == zip ? application/zip,charset=utf-8 : application/x-rar-compressed,charset=utf-8 }); if (typeof window.chrome !== undefined) { // Chrome var link = document.createElement(a); link.href = window.URL.createObjectURL(data); link.download = filename; link.click(); console.log(data); } else if (typeof window.navigator.msSaveBlob !== undefined) { // IE var blob = new Blob([data], { type: fileType == zip ? application/zip : application/x-rar-compressed }); window.navigator.msSaveBlob(blob, filename); } else { // Firefox var file = new File([data], filename, { type: fileType == zip ? application/zip : application/x-rar-compressed }); window.open(URL.createObjectURL(file)); } }

4        、Blob下载时的文件格式

文件格式 type类型 aac audio/aac .abw application/x-abiword .avi video/x-msvideo .azw application/vnd.amazon.ebook .bin application/octet-stream .bmp image/bmp .bz application/x-bzip .bz2 application/x-bzip2 .csh application/x-csh .css text/css .csv text/csv .doc application/msword .docx application/vnd.openxmlformats-officedocument.wordprocessingml.document .eot application/vnd.ms-fontobject .epub application/epub+zip .gif image/gif .htm/.html text/html .ico image/vnd.microsoft.icon .ics text/calendar .jar application/java-archive .jpeg/.jpg image/jpeg .js text/javascript .json application/json .jsonld application/ld+json .mid/.midi audio/midi audio/x-midi .mjs text/javascript .mp3 audio/mpeg .mpeg video/mpeg .mpkg application/vnd.apple.installer+xml .odp application/vnd.oasis.opendocument.presentation .ods application/vnd.oasis.opendocument.spreadsheet .odt application/vnd.oasis.opendocument.text .oga audio/ogg .ogv video/ogg .ogx application/ogg .otf font/otf .png image/png .pdf application/pdf .ppt application/vnd.ms-powerpoint .pptx application/vnd.openxmlformats-officedocument.presentationml.presentation .rar application/x-rar-compressed .rtf application/rtf .svg image/svg+xml .swf application/x-shockwave-flash .tar application/x-tar .tif/.tiff image/tiff .ttf font/ttf .txt text/plain .vsd application/vnd.visio .wav audio/wav .weba audio/webm .webm video/webm .webp image/webp .woff font/woff .woff2 font/woff2 .xhtml application/xhtml+xml .xls application/vnd.ms-excel .xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .xml application/xml 代码对普通用户来说不可读 (RFC 3023, section 3)text/xml 代码对普通用户来说可读 (RFC 3023, section 3) .xul application/vnd.mozilla.xul+xml .zip application/zip .3gp video/3gpp audio/3gpp(若不含视频) .3g2 video/3gpp2 audio/3gpp2(若不含视频) .7z application/x-7z-compressed
声明:本站所有文章                         ,如无特殊说明或标注,均为本站原创发布                        。任何个人或组织                ,在未征得本站同意时                         ,禁止复制                         、盗用                、采集、发布本站内容到任何网站                         、书籍等各类媒体平台        。如若本站内容侵犯了原著者的合法权益        ,可联系我们进行处理         。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
前端的权限控制问题解决方案(前端权限控制(一):前端权限管理及动态路由配置方案) 提升网站排名的稳定方法(从优化网站内部结构到外部推广全面提升排名)