fetch() 与 FormData
fetch() with FormData
我正在学习使用 Node.js 和 multer 上传文件。我已经配置了主 app.js 文件,以及 upload.html.
我的表格:
<form id="uploadForm" action="/uploads" enctype="multipart/form-data" method="post">
<input id="upload-input" type="file" name="uploads" multiple>
<button class="upload-button" type="button">File</button>
</form>
和 script.js 我正在尝试处理表单数据并使用 fetch() 发布它:
uploadInput.addEventListener('change', function() {
let files = event.target.files;
if(files.length > 0) {
let formData = new FormData();
for(let i = 0; i < files.length; i++) {
let file = files[i];
formData.append('uploads', file);
}
fetch('uploads', {
method: 'POST',
body: formData
})
.then(res => res.json(), error => error.message);
}
});
文件正在上传,一切正常,除了两个错误。
首先显示在浏览器控制台:
uploader:1 Uncaught (in promise) SyntaxError: Unexpected token s in JSON at position 0
在 WebStorm 中排名第二 IDE 控制台:
(node:51729) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated.
你知道为什么它抛出错误,但一切正常吗?
看来问题出在 .then(res => res.json(), error => error.message);
JSON 解析错误几乎可以肯定是因为您没有在响应中得到 JSON。很难说出您收到弃用警告的确切原因,但这可能与您的 .then()
调用有关。对于两者,对结果做一些有用的事情,例如 console.log(res)
和 console.log(error)
.
我正在学习使用 Node.js 和 multer 上传文件。我已经配置了主 app.js 文件,以及 upload.html.
我的表格:
<form id="uploadForm" action="/uploads" enctype="multipart/form-data" method="post">
<input id="upload-input" type="file" name="uploads" multiple>
<button class="upload-button" type="button">File</button>
</form>
和 script.js 我正在尝试处理表单数据并使用 fetch() 发布它:
uploadInput.addEventListener('change', function() {
let files = event.target.files;
if(files.length > 0) {
let formData = new FormData();
for(let i = 0; i < files.length; i++) {
let file = files[i];
formData.append('uploads', file);
}
fetch('uploads', {
method: 'POST',
body: formData
})
.then(res => res.json(), error => error.message);
}
});
文件正在上传,一切正常,除了两个错误。 首先显示在浏览器控制台:
uploader:1 Uncaught (in promise) SyntaxError: Unexpected token s in JSON at position 0
在 WebStorm 中排名第二 IDE 控制台:
(node:51729) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated.
你知道为什么它抛出错误,但一切正常吗?
看来问题出在 .then(res => res.json(), error => error.message);
JSON 解析错误几乎可以肯定是因为您没有在响应中得到 JSON。很难说出您收到弃用警告的确切原因,但这可能与您的 .then()
调用有关。对于两者,对结果做一些有用的事情,例如 console.log(res)
和 console.log(error)
.