Ajax文件上传Vue.js


Ajax file upload Vue.js

我正试图使用Vue.js通过Ajax上传一个文件,但服务器一直在响应,说文件需要是一个图像(当它不使用Ajax时,它可以工作)。我的设置如下:

<input type="file" name="avatar" v-model="profileFormData.avatar">

我的数据是:

profileFormData: {
            "name": '',
            "email": '',
            "avatar": '',
        },

对于文件上传,我需要做一些特定的事情吗?

我似乎已经找到了解决这个问题的方法。首先,我必须从form元素(以及该表单中的每个元素)中删除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));