在Vuejs中,我有一个图片拖放代码。我曾尝试使用FormData和axios将文件发送到NodeJS,但没有成功,就像网络上的许多示例一样。
export default function(url, file, name = "avatar") {
const formData = new FormData();
formData.append(name, file);
const config = {
headers: {
'Content-Type': 'multipart/form-data'
}
};
return axios.post(url, formData, config);
};
问题来自客户端而不是服务器 参见https://github.com/expressjs/multer/issues/548 和 https://gist.github.com/HarshithaKP/ebc0e79800e5638fe827c157360378be
我也尝试了经典的输入法,并且效果很好
<form ref='uploadForm'
id='uploadForm'
action='https://localhost:4000/api/upload/picture'
method='post'
encType="multipart/form-data">
<input type="file" name="sampleFile" />
<input type='submit' value='Upload!' />
</form>
我得出的结论是:Axios的标题不完整。
有人建议使用表单数据库https://github.com/form-data/form-data
来完成页眉headers: {
...form.getHeaders(),
'Content-Type': 'multipart/form-data'
}
但是在表单数据中,该库将没有功能getHeaders()
的经典对象FormData(https://developer.mozilla.org/fr/docs/Web/API/FormData)用于客户端。它不存在。在代码中,我们有
module.exports = typeof self == 'object' ? self.FormData : window.FormData;
问题
如何正确填充标头,以便服务器用文件重新协调POST?一种getHeaders()
函数。