gpt4 book ai didi

node.js - 使用 Multer 存储对象

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:13 24 4
gpt4 key购买 nike

我正在使用multer将文件上传到服务器。除了 multer 文档中实际提到的一个问题之外,一切正常。以下是摘录:

"Note that req.body might not have been fully populated yet" (meaning when the storage object filename function is called I guess...). "It depends on the order that the client transmits fields and files to the server"

这正是我的问题所在。我确实验证了 req.body.ID 是否已发送到服务器,但它是在 multer 定义文件名后填充的。

有人对如何处理这个问题有任何建议吗?这是我的代码片段(文件名最终为“未定义”,具有正确的 jpg 扩展名):

//Storage object
var storage = multer.diskStorage({
destination: './uploaded',
filename: function(req, res, cb) {
cb(null, req.body.ID + '.jpg')
}
});

//File Upload Handle
router.post('/file-upload', upload.single('image'), function(req, res, next) {
console.log("routes module-/file-upload " + req.body.ID); // The file ID gets transmitted
res.sendStatus(201);
});

这是我的 HTML:

<form id="fileForm" enctype="multipart/form-data" >

<div class="form-group">
<input id='name' name="name" placeholder="ID" class="form-control-label">
</div>

<div class="form-group" align="center">
<input type="file" id="file" name="image">
</div>

<button type="submit" class="btn btn-warning" value="Upload">Upload</button>

</form>

和前端AJAX:

//Testing Files Uploads
$("#fileForm").on('submit', function(event) {
event.preventDefault();
var formData = new FormData(this);
var fileID = $('#name').val();
formData.append("ID", fileID);

$.ajax('/file-upload', {
type: 'POST',
data: formData,
processData: false,
contentType: false,
})
.done(function(item) {
console.log('Uploaded!');
})
.error(function() {
console.log('doesnt work!')
});
});

//End of Files Uploads

最佳答案

我认为req.body.ID不正确。您很可能尝试使用req.body.name?当我使用你的例子时,我也得到了Undefined.jpg。但是使用.name,我得到了正确的文件名

关于node.js - 使用 Multer 存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32021724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com