Я работаю над API NodeJs, и я решил использовать GridFS для хранения и загрузки файлов. У меня есть два API для этого: загрузка и загрузка. Оба API работают отлично, когда я их называю, используя Postman; однако у меня проблема с загрузкой файлов с помощью браузера. Кажется, браузер видит 200 HTTP-код и ожидает, что файл будет там сразу, пока контент по-прежнему будет транслироваться. Следовательно, он жалуется, что изображение или PDF или т. Д. Имеет ошибку или имеет неверный формат. Единственный тип файла, который работает, - это MP3, для которого браузер запускает плагин для потоковой передачи MP3, который воспроизводит эту музыку.Проблема с загрузкой файла из GridFS в файле MongoDB/NodeJs/GridFS
var Grid = require('gridfs-stream');
Grid.mongo = mongoose.mongo;
var gfs = new Grid(mongoose.connection.db);
//.... some code in here
exports.download = function(req, res) {
gfs.files.find({ "_id": mongoose.Types.ObjectId(req.params.id) }).toArray(function (err, files) {
if(files.length===0){
return res.status(400).send({
message: 'File not found'
});
}
var readstream = gfs.createReadStream({
filename: files[0].filename
});
readstream.pipe(res);
});
};
Я использовал Fiddler поймать запрос и ответ:
Это запрос:
GET http://localhost:9000/api/file/download/5586fd1a04de649c4eff2223?access_token=bluhbluhbluhbluhbluh HTTP/1.1
Host: localhost:9000
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,fa;q=0.6
Cookie: _ga=xxxxxxxxxxxxx; wp-settings-1=editor%3Dhtml%26align%3Dleft%26unfold%3D1%26mfold%3Do%26hidetb%3D1; wp-settings-time-1=1434314682; session_id=xxxxxxxxxxxxxxxxx; connect.sid=xxxxxxxxxx; token=xxxxxxxxxx
и это ответ:
HTTP/1.1 200 OK
X-Powered-By: Express
content-length: 2412930
Date: Mon, 22 Jun 2015 16:45:04 GMT
Connection: keep-alive
%PDF-1.4
%
< The rest of PDF content comes in here >
Любые идеи, как я могу почини это?
Это очень удивительно, если вы не видите никаких действий здесь даже с помощью баунти. – Aidin
Можете ли вы сделать PDF/изображения загруженными в GridFS в правильном формате? Запись данных Gridfs в файл и посмотреть, можете ли вы их открыть? – hassansin
Тот же вопрос для меня. Я использовал mongofiles и проверил md5sum, и я могу подтвердить, что они отлично загружаются в GridFS. Но через браузер он становится поврежденным некоторыми способами, которые я не могу понять. – Chinni