我尝试在获取主体中发送一些FormData,以便使用multer(nodeJS)上传图像。
我尝试为我的提取调用设置标头"Content-Type": "multipart/form-data"
,但是当我这样做时,出现了nodeJS错误:
错误:多部分:未找到边界
然后我尝试删除Content-Type
标头,因此浏览器默认对其进行了设置,并且提取失败,甚至没有输入nodeJS路由器。
这是我的FormData准备方法:
handleChange = event =>
{
if(event.target.type === 'file')
{
const files = event.target.files;
var formData = new FormData();
for(var i = 0; i < files.length; i++)
{
formData.append('images[]', files[i], files[i].name);
}
//UPLOAD IMAGE METHOD
Image.upload(formData);
}
};
这是我的提取呼叫:
upload: async function(formData)
{
return fetch('http://localhost:8080/image/upload', {
method: 'post',
body: formData
})
}
这是我的控制者:
const express = require('express');
const router = express.Router();
const multer = require('multer');
const upload = multer({dest: __dirname + '/uploads/images'});
router.post('/upload', upload.array('images'), (req, res) => {
console.log('req.file', req.file, req.files, req.body);
return res.sendStatus(200);
});
module.exports = router;
先前由app.use('/image', require('./controllers/imageController'));
路由,因此访问的网址为http://localhost:8080/image/upload
没有Content-Type的响应标头:
Provisional headers are shown
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryi3lc9wCsnhrvAOAB
Origin: http://localhost:3000
Referer: http://localhost:3000/backoffice/catalog/edit/5d976d6b50fd7f3d008d0f16
Sec-Fetch-Mode: cors
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36
images[]: (binary)
Content-Type错误:
错误:多部分:未找到边界
谢谢大家的大脑:)!
答案 0 :(得分:0)
最后,我没看清楚这个地方:正是我尝试上传的文件已损坏。我尝试了另一种,效果很好。