vue上传文件如何连接后端接口【参数格式要求multipart/form-data】

这篇博客介绍了在Vue中使用Element-UI的el-upload组件上传文件时遇到的跨域和后端收不到文件的问题。解决跨域问题通过使用httpRequest和axios,而文件为空问题则需要手动处理formData。此外,博主还提到el-upload的删除功能需要自定义方法来实现,因formData无法直接按索引删除文件。
摘要由CSDN通过智能技术生成

前端上传文件的组件–> el-upload
不知道其他人有没有遇到这个问题,使用element-ui提供的样例上传样式,就是把action改成自己的后端接口,第一个问题会出现跨域,就是一般是报403错误,第二个问题是老是后端收不到数据,说files为空。尤其是第二个问题,头发都给抓没了,然后才想到一个可以替代的方法,当然如果大家都没有出现这个问题,只能说是我自己功夫不到家o(╥﹏╥)o
跨域的解决方法是放弃action,转战httprequest(element ui 用于覆盖action的方法,可以自己写),也不要像其它接口一样直接接地址,就是用一下axios(一个用于创建http请求和转换请求数据的库)
为空的解决方法就是自己去把数据拿出来,然后再放到请求里面去

  • html
<el-upload
   :action="action"
   :file-list="modeList1"
   :http-request="modeUpload1"
   :headers="headerObj"
   :multiple="true"
   :before-remove="handleRemove1"
>
<el-button size="small" type="primary">上传</el-button
在使用Vue传递multipart/form-data参数时,可能会遇到无法传递的问题。其中一个可能的原因是未正确设置表单的enctype属性。即便是使用Vue,也需要确保表单是正确设置的。 enctype属性告诉浏览器表单数据应该如何编码。当表单包括二进制数据(如图片或文件)时,必须设置为multipart/form-data。但是,Vue默认情况下不会自动将enctype设置为multipart/form-data。因此,需要手动设置表单的enctype属性为multipart/form-data。 设置表单的enctype属性有两种方法。第一种方法是在HTML代码中手动设置表单的enctype属性。例如: <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="Upload" /> </form> 第二种方法是在Vue组件中使用v-bind指令设置表单的enctype属性。例如: <template> <form action="/upload" method="post" :enctype="'multipart/form-data'"> <input type="file" name="file" /> <input type="submit" value="Upload" /> </form> </template> 在第二种方法中,v-bind指令允许您绑定一个表达式到Vue组件中的HTML属性。在这种情况下,使用v-bind指令将enctype属性设置为multipart/form-data。这将确保浏览器正确地处理表单数据,并将二进制数据正常提交到服务器。 总之,要在Vue中成功传递multipart/form-data参数,您需要确保正确设置表单的enctype属性。此外,记得确保你的服务器端对multipart/form-data请求有正确的处理方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值