Sum*_*nta 3 multipartform-data node.js vue.js multer axios
我在前端使用VueJs/axios,在nodejs中使用multer来进行简单的文件上传.
到目前为止,所有的尝试都没有成功.虽然这可以通过使用ng-upload和其他类似插件的角度1/2以100种方式实现.但VueJs似乎缺乏这种基本功能.根据我的研究,axios不支持"multipart/form-data".参考https://github.com/mzabriskie/axios/issues/789.
multer和其他nodejs库似乎可以从angular 1/2无缝地使用"multipart/form-data".但是,VueJs无法使用相同的功能.
除了支持"multipart/form-data"的axios之外还有其他选择吗 - WebKitFormBoundary?
非常感谢
您可以为此使用FormData,这非常简单。
让我给你看一个例子:
// html
<button ref="uploadBtn" @onChange="upload">Upload Files</button>
// js
methods: {
upload () {
let files = this.$refs.uploadBtn.files
let formData = new FormData()
// if you want to upload multiple files at once loop
// through the array of files
formData.append('attachment', files[0])
axios.post(url, formData).then(response => ...)
}
}
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题,您实际上并不需要第三方插件。
我在VueJs中找到了两种实现这一目标的方法.可能会有更多.
选项1.使用Axios.根据上面Bert Evans的回答
const formData = new FormData();
formData.append("file", _file);
formData.append("id", 7878);
axios.post("/api/uploadFile", formData)
.then(function (result) {
console.log(result);
}, function (error) {
console.log(error);
});Run Code Online (Sandbox Code Playgroud)
选项2.使用Native XMLHttpRequest() `
var formData = new FormData();
formData.append("file", _file);
formData.append("id", 7878);
var request = new XMLHttpRequest();
request.open("POST", "/api/uploadFile");
request.send(formData);
request.onreadystatechange = function () {
if (request.readyState === 4) {
if (request.status === 200 && request.statusText === 'OK') {
console.log('successful');
} else {
console.log('failed');
}
}
}Run Code Online (Sandbox Code Playgroud)
这里有一个有趣的FormData()浏览器支持caniuseFormData
对于那些像我这样的人来说,使用axios使用content-type ="multipart/form-data".它不会起作用.
| 归档时间: |
|
| 查看次数: |
9396 次 |
| 最近记录: |