我正在尝试将请求对象从我的路由传递到处理上传的 Controller ,
这是路线-
app.post('/upload/notes',auth.requiresApiLogin,function(req,res){
upload.file(req,res);
});
这是具有导出文件方法的 Controller (upload.js)代码
var fs = require('fs'),
uuid = require('node-uuid'),
path = require('path'),
Busboy = require('busboy');
exports.file = function(req, res) {
var busboy = new Busboy({ headers: req.headers});
busboy.on('file', function(fieldname, file, filename,transferEncoding,mimeType) {
console.log("inside upload function");
console.log(file);
});
busboy.on('field', function(fieldname, val, valTruncated,keyTruncated) {
console.log("inside field function");
console.log(fieldname);
});
busboy.on('finish',function(){
console.log('finished');
});
req.pipe(busboy);
//
// req.pipe(req.busboy);
// req.busboy.on('file', function(fieldname, file, filename,transferEncoding,mimeType) {
// var fName = uuid.v4();
// console.log(filename);
// var fileext = filename.substr(filename.lastIndexOf('.') + 1);
//
// console.log(transferEncoding);
// console.log(mimeType);
// var filepath = path.normalize(__dirname + '/../../');
// var fstream = fs.createWriteStream(filepath+'/server/uploads/'+fName+'.'+fileext);
// file.pipe(fstream);
// fstream.on('close', function () {
// res.redirect('back');
// });
// });
};
所以,我看到字段和文件都被记录在控制台中,但没有触发完成事件。我还应该尝试什么?
最佳答案
您需要以某种方式使用file
流。出于测试目的,您可以通过在文件事件处理程序中添加 file.resume();
来忽略数据。
关于javascript - 服务员没有触发完成事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24588408/