gpt4 book ai didi

javascript - 上传文件并使用 multer 传递附加参数

转载 作者:数据小太阳 更新时间:2023-10-29 04:58:02 27 4
gpt4 key购买 nike

我正在使用 jQuery Form Pluginmulter将文件上传到我的服务器。这工作得很好,但我试图传递一个附加参数,它将确定文件的确切保存位置。

我有以下代码,我想将其扩展为按规定运行:

HTML

<form id="uploadForm"
enctype="multipart/form-data"
action="/files"
method="post">
<input type="file" id="userFile" name="userFile"/>
<input type="text" hidden id="savePath" name="savePath" value="path"/>
</form>

客户端JS

uploadForm.submit(function() {
$(this).ajaxSubmit({

error: function(xhr) {
console.log('Error: ' + xhr.status);
},

success: function(response) {
console.log('Success: ' + response);
}
});

return false;
});

Node.js 路由

app.post(APIpath + "file",function(req,res){
var storage = multer.diskStorage({
destination: absoluteServePath+ "/" + config.filePath,
filename: function (req, file, cb) {
cb(null, file.originalname);
}
});
var upload = multer({ storage : storage}).any();

upload(req,res,function(err) {
if(err) {
console.log(err);
return res.end("Error uploading file.");
}
res.end("File has been uploaded");
});
});

注意:我知道我不是在检查 mime 类型或清理用户文件,但现在对我来说主要是次要的。

最佳答案

问题在于 multer 首先保存文件,然后才将表单的剩余部分写入 req - 例如隐藏字段。

试试这个:

app.post(APIpath + "file",function(req,res){
var storage = multer.diskStorage({
destination: tmpUploadsPath
});
var upload = multer({ storage : storage}).any();

upload(req,res,function(err) {
if(err) {
console.log(err);
return res.end("Error uploading file.");
} else {
console.log(req.body);
req.files.forEach( function(f) {
console.log(f);
// and move file to final destination...
});
res.end("File has been uploaded");
}
});
});

关于javascript - 上传文件并使用 multer 传递附加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35847293/

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