gpt4 book ai didi

node.js - 使用带有 Express 的 node-formidable 上传文件时处理多个文件

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:09 24 4
gpt4 key购买 nike

在Express上用node-formidable上传文件就这么简单

app.post('/upload', function(req, res) {
// do something with req.files
});

文件现在已保存

表单:(multiple="multiple"是一个HTML5特性,允许用户选择多个文件上传)

<form method="post" enctype="multipart/form-data" action="upload">
<input type="text" name="title"/>
<input type="file" name="upload" multiple="multiple"/>
<input type="submit" value="upload" id="s3form_submit"/>
</form>

如果我将这一行添加到上传代码

console.log(req.files.upload.path);

上传一个文件时,路径会显示在控制台中。但是当我上传多个文件时,它只是在控制台中显示未定义。如何获取每个文件的日志内容?使用 for 循环?

GitHub 上的 Node 强大示例会在您上传多个文件时记录每个文件:https://github.com/felixge/node-formidable/blob/master/example/upload.js (我尝试在 Express 中使用此代码,但没有用)它完全符合我的要求,但如何在 Express 应用程序中执行此操作?

最佳答案

它的工作原理是将下面的行移动到 app.configure 函数的底部。在此处阅读有关 Express 中间件顺序的重要性:http://expressjs.com/guide.html#middleware

app.use(express.bodyParser({ uploadDir:__dirname + '/public/uploads' }));

并且通过使用这个处理程序:

app.post('/upload', function(req, res){
var form = new formidable.IncomingForm(),
files = [],
fields = [];
form.on('field', function(field, value) {
fields.push([field, value]);
})
form.on('file', function(field, file) {
console.log(file.name);
files.push([field, file]);
})
form.on('end', function() {
console.log('done');
res.redirect('/forms');
});
form.parse(req);
});

关于node.js - 使用带有 Express 的 node-formidable 上传文件时处理多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124099/

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