2017-06-02 77 views
0

Vue2.js +爱可信,不能追加文件,形成数据如何追加文件,以爱可信post请求

axios.post('/addTrack', this.form.data) 

形式的数据对象:

 form: { 
      data: { 
       title : '', 
       style : '', 
       authors: [ 
        { 
         id: '', 
         rightholder: 1, 
         percent: '' 
        } 
       ], 
       composers: [ 
        { 
         id: '', 
         rightholder: 1, 
         percent: '' 
        } 
       ], 
       right_area: 1, 
      }, 
      errors: { 
      } 
     }, 

如何将文件添加到这个请求? 这不起作用:

this.form.data.file = e.target.files[0]; 

的console.log表明form.data.file属性是正确的文件对象,但爱可信发送此:

file:{_choosed: true} 

内容类型:应用程序/ JSON

+0

您需要将要传输的文件编码为表单的一部分。例如,你可以[以base64编码](https://stackoverflow.com/questions/36280818/how-to-convert-file-to-base64-in-javascript),并解码它在服务器端 – slezica

+0

你有没有在标题中设置任​​何“Content-Type”? – Umair

+0

默认情况下,内容类型:应用程序/ json – fiter

回答

0

正如Umair建议,尝试对爱可信POST方法可选配置参数设置标题如下:

axios.post('/addTrack', this.form.data , { 
    headers: { 
    'Content-Type': 'multipart/form-data' 
    } 
}); 
+0

警告:缺少边界的多部分/形式数据POST数据未知的行0 – fiter

+0

好吧,摆脱头配置值,然后试试这个: 创建您的表单数据这个: 'var myForm = document.getElementById('myForm'); VAR FORMDATA =新FORMDATA(myForm的);' 然后你的文件添加到与append方法表单数据: 'formData.append(e.target.files [0]);' –

+0

它的工作原理!并且没有意义追加文件,因为它已经在myForm变量中 – fiter