Safari не удалось загрузить PDF-файл с сервера
КОД
download: function (req, res) {
var id = req.param('id');
if (!id) {
return res.notFound();
}
var Grid = require('gridfs-stream');
var fs = require('fs');
var grid = new Grid(gridDb, mongo);
Document.findOneById(id.trim()).exec(function (err, doc) {
if (err) {
return res.serverError(err);
}
if (!doc) {
return res.notFound();
}
grid.collection('document').findOne({idStr: doc.id}, function (err, file) {
if (err) {
return res.serverError(err);
}
if (file) {
if (doc.contentType = "application/pdf") {
res.set({
'Content-Type': 'application/octet-stream',
'Content-Disposition': 'attachment; filename=' + doc.filename,
'Content-Length': file["length"]
});
} else {
res.set({
'Content-Type': file.contentType,
'Cache-Control': 'public',
'Pragma': 'public',
'ETag': file['md5'],
'Accept-Ranges': 'bytes',
'Content-Length': file["length"]
});
}
sails.log("re")
var readstream = grid.createReadStream({_id: id, root: 'document'});
return readstream.pipe(res);
} else {
return res.notFound();
}
});
});
ПРОБЛЕМА
Этот код загружает файл из gridFs. Он отлично работает во всех браузерах для всех типов файлов, кроме PDF-файлов в Safari. Может кто-нибудь сказать, что не так с кодом, или, может быть, это ошибка, специфичная для Safari? Я также попробовал следующий код:
res.set({
'Content-Disposition': 'attachment; filename=' + doc.filename,
'Content-Type': 'application/pdf',
'Content-Length': file["length"],
'Content-Transfer-Encoding': 'binary',
'Cache-Control': 'public',
'Pragma': 'public',
'ETag': file['md5']
});