2016-04-28 142 views
3

我想通过使用Vue JS通过Ajax上传文件 - 但是服务器一直在回应说文件需要成为一个图像(它的工作原理,当它不使用AJAX)。设置我有如下:Ajax文件上传Vue JS

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

而且我的数据是:

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

是否有一些具体的事情,我需要的文件上传呢?

回答

2

我似乎已经找到了解决办法。首先,我必须从表单元素(以及该表单中的每个元素)中删除v模型。然后,不要发布v模型,请使用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));