vue的单文件上传与多文件上传与blob

在文件上传的操作中,我们首先要定义一个formdata数组去存放要向后端发送的数据

var formData = new FormData();

如果是单文件的话,我们只需要将要发送的文件放到我们所创建的formdata数组中,这里this.fileList[0].raw就是我的文件,这里一定要注意加上raw才是真实文件数据,否则会报500错误。

formData.append("file", this.fileList[0].raw);

接下来我们只需要将formdata以参数形式传给后端即可

this.$post(this.$url.NAVIGATION + 'xxxxxxx', formData, )

如果是多文件上传,我们就要遍历一下filelist数组中所存放的文件数量,然后再去发送。

this.fileList.forEach((item) => {
    formData.append('file', item.raw);
    console.log("file")
});

同理,如果除了文件还要向后端传递其他内容,只要append就好了。

formData.append("password",this.password);

补充,在向后端传递文件时,经常需要我们前端将文件进行一个数据处理,这时候输入以下代码。

BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。

let blob = new Blob([res.data]);//response.data为后端传的流文件
console.log(blob);

let downloadFilename = "数据.tar";
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
    //兼容ie浏览器
    window.navigator.msSaveOrOpenBlob(blob, downloadFilename)
}else {
    //谷歌,火狐等浏览器
    let url = window.URL.createObjectURL(blob);
    let downloadElement = document.createElement("a");
    downloadElement.style.display = "none";
    downloadElement.href = url;

    console.log(url);
    downloadElement.download = downloadFilename;
    document.body.appendChild(downloadElement);
    downloadElement.click();
    document.body.removeChild(downloadElement);
    window.URL.revokeObjectURL(url);
}
this.$message.success('上传并导出成功!')
    .catch(()=>{
        this.$message.error("下载失败")
    })

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值