0
我正在使用NodeJs 1.9.x以及Express 3.x,mongoose 3.3.x和gridfs-stream模塊。以下是上傳代碼。哪個工作很好。無法使用nodejs/expressjs以流的形式從MongoDB GridFS下載文件
var mongoose = require('mongoose');
var fs = require('fs');
var GridStrm = require('gridfs-stream');
exports.stream_ajax_upload_file = function(req, res){
var fileType = req.header('X-File-Type');
var fileName = req.header('X-File-Name');
var uniqId = req.param('uniqId', '112211112111');
var conn = mongoose.createConnection('localhost', 'TestArun', 27017);
conn.once('open', function() {
var gfs = GridStrm(conn.db, mongoose.mongo);
var fileId = new ObjectID(uniqId);
writestream = gfs.createWriteStream(fileId, [{"content_type": fileType, "metadata":{ "fileName": fileName, "uploaded_at": (new Date()).toString() }}]);
req.on('data', function(data) {
console.log("Writing stream in to gridfs");
writestream.write(data);
});
req.on('end', function(data) {
writestream.end();
res.send("I think it is uoploaded: ID::" + uniqId);
});
});
}
我能夠在網格中看到上傳的數據塊。以下是下載代碼。
var mongoose = require('mongoose');
var fs = require('fs');
var GridStrm = require('gridfs-stream');
exports.download_file_as_stream = function(req, res){
var uniqId = req.param('uniqId', '112211112111');
var conn = mongoose.createConnection('localhost', 'TestArun', 27017);
conn.once('open', function() {
var gfs = GridStrm(conn.db, mongoose.mongo);
var fileId = new ObjectID(uniqId);
var readstream = gfs.createReadStream(fileId, [{"content_type": 'application/pdf'}]);
//res.header('content-type','application/pdf');
readstream.pipe(res);
});
}
問題是我無法下載正確的文件。當我嘗試下載時,我得到一些以請求url 的名義下載的文件,例如:download_file_as_stream。但大小與上傳的文件相同。我認爲與內容類型等問題的設置。我不確定問題在哪裏。無論是在上傳還是下載部分?
嗨,你能告訴你如何處理多個文件類型控制或多個文件選擇? – codin