Как скачать вложение с couchdb используя nodejs - PullRequest
0 голосов
/ 28 января 2020

Я использую 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) И файл открывается не так, как я хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...