请问在 Express 4.0 里如何实现上传?
发布于 11 年前 作者 youqingkui 19558 次预览 最后一次回复是 10 年前 来自
是要在 app.js 里添加:
app.use(bodyParser({ keepExtensions: true, uploadDir: './public/images' })); ?
我表单的 file 的名字为 file1,在接收请求里这样子写
router.post('/', function(req, res){
console.log(req.files.file1);
});
会报:
TypeError: Cannot read property 'file1' of undefined
请问如何实现个简单上传?谢谢!
15 回复
使用multer中间件 app.use(require(‘multer’)({dest:__dirname + ‘/uploads’}));
4.0 的 bodyparser 不处理文件了啊…
要处理文件得用
https://github.com/andrewrk/connect-multiparty
我這樣子app.use(connect.multipart({ uploadDir: ‘./public/’ }));已經能夠上傳,但是如何在它沒有保存到文件夾的時候處理它呢?比如重命名?謝謝!
謝謝!已經可以了,但是我怎麼在文件保存到目的地的時候先處理它呢?
@youqingkui
https://github.com/andrewrk/node-multiparty/
看这个…
@youxiachai 恩,謝謝。就是文檔是英文的,到時還要請教下。
@youxiachai 我遇到个错误,我代码是这样子的: router.post(’/’, function(req, res){ var form = new multiparty.Form();
req.form.on(‘part’, function(part){ // transfer to s3 etc console.log(‘upload %s %s’, part.name, part.filename); var out = fs.createWriteStream(’/tmp/’ + part.filename); part.pipe(out); });
req.form.on(‘close’, function(){ res.end(‘uploaded!’); }); }); 我已经安装了组建并var multiparty = require(‘multiparty’);但是总是报这个错误:Cannot call method ‘on’ of undefined
@youqingkui 你用了connect-mutilparty 就完全没必要这么写了…
我给那个文档.是让你看看,配置参数.怎么配…
formidable
formidable +1 https://www.npmjs.org/package/formidable coffeescript 示例:
coffeescript + 1
+1
connect-multiparty 的作者已经不推荐使用这个中间件了。其不会在上传后将之前生成的临时文件清除。
最好使用 formidable 或者busboy。
下面是简单的busboy使用示例
multiparty 和 busboy 不知道区别是什么,我选的前者,npm下载量是后者的10倍
multer吧 express官方推荐 自豪地采用 CNodeJS ionic