这篇文章给大家分享的是有关vue如何实现上传图片文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
原始输入标签形式表单上传
& lt; input 类型=癴ile", @change=皁nchangemd"比; 方法:,{ ,onchangemd (e) { console.log (e.target.files)//这个就是选中文件信息 let formdata =, new FormData () Array.from (e.target.files) . map (item =祝辞,{ ,,,,,,,,console.log(项) ,,,,,,,,formdata.append (“file",,项),,//将每一个文件图片都加进formdata ,,,,,,}) ,,,,,,axios.post(“接口地址“,,formdata),然后(res =祝辞,{,console.log (res),}) } 以前,}>当看到二进制提交数据,就成功了(二进制)
这种也是成功的(是二进制的展开数据。因为有些浏览器不显示二进制)
<强>上图可以看出强>传统上传文件是以二进制的格式formdata格式提交
用elementui自带的el-upload上传
& lt; el-upload action=啊?:变化=癶andleelchange",,: auto-upload=癴alse",列表类型=皃icture-card"比; ,,,,& lt;小姐:类=癳l-icon-plus"祝辞& lt;/i> & lt;/el-upload> ,handleelchange(文件,文件列表),{ ,,,,,console.log(文件,文件列表) ,,,,,let formdata =, new FormData () ,,,,,fileList.map (item =祝辞,{,//文件列表本来就是数组,就不用转为真数组了 ,,,,,,,formdata.append (“file",, item.raw),,//将每一个文件图片都加进formdata ,,,,,}) ,,,,,,axios.post(“接口地址“,,formdata),然后(res =祝辞,{,console.log (res),}) ,,,},不用设置请求头等(直接用FormData格式提交就行),当看到FormData数据为二进制就说明提交正常(二进制),同样有些浏览器不显示二进制,以- - - - - - WebKitFormBoundaryXoZpi2juymcNoW0l开头的这种也是提交正常的
注意文件列表数组中生的才是真实文件数据,如果直接用物品而不是项。生,那么会报500错误,并且formdata中的数据不是二进制而是对象格式
fileList.map (item =祝辞,{ formdata.append(“文件”,项),//错误实例。要用item.raw })& lt; el-upload ref=癳lupload", action=啊? multiple : auto-upload=癴alse",: http请求=癶andleupload",,列表类型=皃icture-card"比; & lt;小姐:类=癳l-icon-plus"祝辞& lt;/i> & lt;/el-upload> & lt; button  @click=皍ploadelupload"祝辞点击提交& lt;/button> 方法:{ uploadelupload (), { ,,,,,let formdata =, new FormData () ,,,,,,美元refs.elupload.submit();,//,这里是执行文件上传的函数,其实也就是获取我们要上传的文件,, ,,,,,this.fileList.forEach (item =祝辞,{ ,,,,,,,formdata.append (“file",,项),,//将每一个文件图片都加进formdata ,,,,,}) ,,,,,formdata.append (“score",, 4) ,,,,,axios.post(“接口地址“,,formdata),然后(res =祝辞,{,console.log (res),}) ,,,}, ,,,handleupload(参数),{ ,,,,,this.fileList.push (param.file);//,一般情况下是在这里创建FormData对象,但我们需要上传多个文件,为避免发送多次请求,因此在这里只进行文件的获取,参数可以拿到文件上传的所有信息 ,,,}, }
elementui提交图片以及其他数据
- <李>