使用Axios和Vanilla JS发布文件

时间:2019-01-14 11:15:16

标签: javascript input axios form-data

我创建了一个可以接收文件的输入。单击提交按钮后,我将设置表单数据,尝试将文件追加到其中,然后向服务器启动axios发布请求。

可悲的是,我不知道如何将文件传递给formData:

button.onclick = function(){
   let formData = new FormData();
   formData.append('myFile', e.dataTransfer.getData("files"));
   axios.post("/api/upload", formData)
      .then(response =>{
         console.log(response.data)})
      .catch(err=> {
         console.log("error")
   })
}

要添加到e.dataTransfer.getData(“ files”)的更正是什么?输入文件可以是图像,pdf等。输入看起来像这样:

<input type="file" multiple/>

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试以这种方式附加formData:

form.append('fieldName', 'fileBufferData', 'fileName');

字段名称将是服务器在表单中查找的名称。 缓冲区是文件的数据/内容。 文件名..好是文件名。

或者可能是因为您没有设置标题:

            let form = new FormData();
            form.append('field', 'buffer', 'fileName');

            axios.post('/api/upload', form, {
                headers: {
                    'Content-Type': `multipart/form-data; boundary=${form._boundary}`
                }
            }).then((res) => {
                console.log(res.data);
            }).catch((err) => {
                console.log(err);
            });

如果这没有帮助,则可能是服务器端出现问题。