Я использую nodejs с пакетом couchdb nano npm в бэкэнде и angularjs во фронтэнде. Я хочу скачать вложение couchdb.
На стороне сервера: Маршрут / fileupload / downloadDbDoc /: doc_id /: doc_name
const path = require('path');
const fs = require('fs');
let data = await students_db.attachment.get(doc_id, doc_name);
let filePath = path.join('tempfiles',doc_name);
fs.writeFile(filePath, data, function (err) {
if (!err){
const file = fs.createReadStream(filePath);
res.setHeader('Content-Type', 'image/jpeg; image/jpg; image/png; ');
res.setHeader(
'Content-Disposition',
'attachment; filename="' + doc_name + '"'
);
file.pipe(res);
}
});
Клиентская сторона
$scope.downloadDoc = function (doc_id, doc_name) {
$http.post('/fileupload/downloadDbDoc/' + doc_id + '/' + doc_name, {
responseType: 'arraybuffer'
}).then(function (response) {
console.log(response);
let headers = response.headers();
headers['Content-Disposition'] = 'attachment';
let blob = new Blob([response.data], { type: 'octet/stream' });
let link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = docname;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}, function (errorRes) {
console.log(errorRes);
});
};
Когда Я выполняю этот код, загрузка начинается. Но проблема в том, что когда я открываю этот загруженный файл, он показывает Ошибка интерпретации файла изображения JPEG (не файл JPEG: начинается с 0xef 0xbf) И файл открывается не так, как я хочу.