我正在尝试使用Vue.js通过Ajax上传文件 - 但是,服务器一直在回答说该文件需要是一个图像(它在不使用ajax时有效)。我的设置如下:
<input type="file" name="avatar" v-model="profileFormData.avatar">
我的数据是:
profileFormData: {
"name": '',
"email": '',
"avatar": '',
},
我是否需要为文件上传做些具体的事情?
我似乎找到了解决这个问题的方法。首先,我必须从表单元素(以及该表单中的每个元素)中删除v模型。然后,不是发布v-model,而是使用FormData
获取要发送的数据。
这是一个例子:
//Pass the form into a new FormData object
var formData = new FormData(this.el);
//Pass through the object instead of data passed via a v-model
this.vm
.$http[this.getRequestType()](this.el.action, formData)
.then(this.onComplete.bind(this))
.catch(this.onError.bind(this));