是要在 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
请问如何实现个简单上传?谢谢!
使用multer中间件 app.use(require(‘multer’)({dest:__dirname + ‘/uploads’}));
我這樣子app.use(connect.multipart({ uploadDir: ‘./public/’ }));已經能夠上傳,但是如何在它沒有保存到文件夾的時候處理它呢?比如重命名?謝謝!
謝謝!已經可以了,但是我怎麼在文件保存到目的地的時候先處理它呢?
@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 示例:
form = new formidable.IncomingForm()
form.parse req, (err, fields, files)->
console.log files
console.log fields
coffeescript + 1
+1
connect-multiparty 的作者已经不推荐使用这个中间件了。其不会在上传后将之前生成的临时文件清除。
最好使用 formidable 或者busboy。
下面是简单的busboy使用示例
busboy = require 'connect-busboy'
...
app.use busboy()
...
app.post '/upload', (req,res)->
req.pipe req.busboy
req.busboy.on 'file', (fieldname, file, filename) ->
...
multiparty 和 busboy 不知道区别是什么,我选的前者,npm下载量是后者的10倍
multer吧 express官方推荐 自豪地采用 CNodeJS ionic