框架:node.js的/ express.js /打雜/ GridFS的流(MongoDB的)node.js的上傳和下載pdf文件
我使用打雜上傳文件,然後使用GridFS的流存儲mongodb網格中的文件。
req.pipe(req.busboy);
req.busboy.on('file', function (bus_fieldname, bus_file, bus_filename) {
var writestream = gfs.createWriteStream({
filename: bus_filename,
});
bus_file.pipe(writestream);
writestream.on('close', function (file) {
res.redirect('/xxxxx/');
});
});
下載非常簡單:使用GridFS的流的createReadStream我讀了MongoDB的內容,然後使用下面的代碼將其發送給瀏覽器。
gfs.findOne({_id: attachmentid}, function (err, file) {
if (err || !file){
res.send(404);
}else{
var fileName = file.filename;
var readstream = gfs.createReadStream({_id: attachmentid});
var buffer = "";
readstream.on("data", function (chunk) {
buffer += chunk;
});
// dump contents to buffer
readstream.on("end", function() {
res.set("Content-Disposition","attachment; filename=" + fileName);
res.send(buffer);
});
}
問題:當我上傳90KB pdf文件,其上傳的罰款。我看到mongodb中的大小是正確的。但是當我下載時,下載的文件的文件大小約爲165kb。有一個不匹配。這不會發生在文本文件中。當然,它與數據類型有關。
任何人都可以請幫忙嗎?
謝謝...偉大工程。 – user3658423