一、问题
点击下载按钮,实现文件的下载,而不是新建窗口打开文件
用的 download.js 实现,调用时传了三个参数:
// 引用 dowload.js 文件
import download from '@/lib/dowload.js'
// 点击 button 时,调用
download(url, name, docType);
这样可以下载文件,文件名也对。
找到下载好的文件,打开后,下载的文件内容和上传的文件内容不对应,所有的内容都编程url地址
二、经过
download.js 三个参数都传,第一个不应该传 url,看官网上,三个都传的话,第一个参数应为包含快速到ba文件内容的Blob、File、String或dataURL.
官网如何识别 url?传参时,只有一个参数,即:只有url,没有name等参数
// 源码片段
url = !strFileName && !strMimeType && payload,
考虑到项目上有好多地方调用时都是传的三个参数,换其他方式更费时费力
三、结果
直接改了源码
// url = !strFileName && !strMimeType && payload 改为
url = payload,
// 改完后,js文件就可以进入 if(url && url.length< 2048){
四、如果url中有中文的字符串
// 控制台打印 anchor.href 、 url 后会发现,两个String不一样了
// 此处的判断不能通过,导致文件虽然成功下载了,但不能正常打开
if(anchor.href.indexOf(url) !== -1){
我直接选择了注释这个判断,如果有其他方法,欢迎讨论~