在Express上使用node-formidable上传文件就像这样简单
app.post('/upload', function(req, res) {
// do something with req.files
});
Run Code Online (Sandbox Code Playgroud)
现在保存文件
表单:( 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>
Run Code Online (Sandbox Code Playgroud)
如果我将此行添加到上传代码中
console.log(req.files.upload.path);
Run Code Online (Sandbox Code Playgroud)
上传一个文件时,路径会显示在控制台中.但是当我上传多个文件时,它只是在控制台中显示为undefined.如何获取每个文件的日志内容?使用for循环?
当您上传多个文件时,GitHub上的节点强大的示例会记录每个文件:https://github.com/felixge/node-formidable/blob/master/example/upload.js(我尝试在Express中使用此代码,但没有它正是我想要的,但我如何在Express应用程序中执行此操作?
Fro*_*ode 10
它的工作原理是将下面一行移动到app.configure函数的底部.在此处阅读有关Express中间件订单的重要性:http://expressjs.com/guide.html#middleware
app.use(express.bodyParser({ uploadDir:__dirname + '/public/uploads' }));
Run Code Online (Sandbox Code Playgroud)
并通过使用此处理程序:
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);
});
Run Code Online (Sandbox Code Playgroud)
谢谢瑞恩!
| 归档时间: |
|
| 查看次数: |
12420 次 |
| 最近记录: |