首先是html部分
<el-upload
action=""
list-type="picture-card"
:on-success="upLoadSuccess"
:file-list="picList"
:http-request="uploadPicture"
>
<i class="el-icon-plus"></i>
</el-upload>
js部分
单文件上传的话是将图片二进制字节流作为body主体直接上传,不需要Base64编码,首先需要读取文件字节流,转字节流数组,有一点很重要content-type 需要指定为image/jpeg,不然可能会导致浏览器对字节流base64编码
js代码
uploadPicture(params) {
let file = params.file
let reader = new FileReader()
reader.readAsArrayBuffer(new Blob([file]))
reader.onload=()=>{
axios.post("xxxx",reader.result,{
headers:{
accessToken: "xxxx",
'Content-Type': 'image/jpeg'
}
})
}
},
之前被content-type 搞了很久 网上的说法都是必须把content-type 指定为multipart/form-data,并且将数据放到formData对象中,我后来问了后台这种方式适合多文件传输 字节流的确需要base64编码 然后放到formData中 这样方便数据分隔 我可能表述有问题或者理解上有错漏 如果有了解的比较清楚的朋友 望在评论里指正
版权声明:本文为weixin_38987500原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。