首页 > 解决方案 > 如何使用nodejs从couchdb下载附件

问题描述

我在后端使用带有 couchdb nano npm 包的 nodejs,在前端使用 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 开头) 并且文件没有按我想要的方式打开。

标签: node.jsdownloadcouchdb

解决方案


推荐阅读