我想上传一张关于更改和 formData 的图片,我相信它正在抓取前端的信息,因为我没有得到未定义的信息,但在我的后端它是未定义的。
//THIS IS MY INPUT
<input class="second-picture" type="file" name="filename" accept="image/gif, image/jpeg, image/png">
//DEFINING FORMDATA
var formData = new FormData();
formData.append('file', $('input.second-picture').prop('files')[0])
console.log(formData.get("file"))
// THIS CONSOLE GIVES ME:
File {
name: picture.jpg
lastModified: xxx (date)
size: 541092
type: "image/jpeg"
webkitRelativePath: ""
}
这是 AJAX 调用和后端“POST”
AJAX CALL -
$.ajax({
type: 'POST',
url: `/api/Upload-second-picture`,
crossDomain: true,
data: formData,
cache: false,
processData: false,
contentType: false,
enctype: 'multipart/form-data',
mimeType: 'multipart/form-data',
beforeSubmit : function() {
},
success : function(responseText, statusText, xhr, $form) {
console.log('responseText', responseText)
}
});
router.post('/Upload-second-picture', function(req, res) {
let upload = multer({ storage: storage }).single('filename')
upload(req, res, function (err) {
let file = req.file
console.log('this is my file', file) // RETURNS UNDEFINED
if(file != undefined) {
if (err) {
return res.send("Error: file not uploaded 2", err)
}
return res.send(fileName)
}
})
})
如何让后端也抓取信息?
最佳答案
您将文件放在 file
键中,在 new FormData
中,因此使用 multer 获取相同的文件应该很自然:
let upload = multer({ storage: storage }).single('file');//instead of filename
关于javascript - FormData在前端定义,在后端未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297494/