Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js echosign联合文档api_Node.js_Buffer_Encode_Fs_Echosign - Fatal编程技术网

Node.js echosign联合文档api

Node.js echosign联合文档api,node.js,buffer,encode,fs,echosign,Node.js,Buffer,Encode,Fs,Echosign,{agreementId}/combinedDocument 我试图从响应主体创建一个文件,但它正在创建一个我无法打开的文件。即使文件中没有密码,也需要密码。我认为这一定与编码/解码有关 我正在使用node express服务器。以下是我正在使用的几行代码: var request = require('request'); request({ baseUrl: 'https://api.na1.echosign.com/api/rest/v5', url: '/agreeme

{agreementId}/combinedDocument

我试图从响应主体创建一个文件,但它正在创建一个我无法打开的文件。即使文件中没有密码,也需要密码。我认为这一定与编码/解码有关

我正在使用node express服务器。以下是我正在使用的几行代码:

var request = require('request');

request({
    baseUrl: 'https://api.na1.echosign.com/api/rest/v5',
    url: '/agreements/' + req.params.id + '/combinedDocument',
    headers: {'Access-Token': process.env.ECHOSIGN_INTEGRATIONKEY}
  },
  function(error, response, body){
    if(error) {
      res.send(error);
    }
    else {
      var buf = new Buffer(body)
      res.set({
        'Content-Disposition': 'attachment; filename=test.pdf',
        'Content-Type': 'application/pdf; charset=utf-8'
       });
       res.write(buf);
       res.end();
    }
  }
);

如果有人无意中发现了这一点,这就是最终的效果。我认为问题在于,从API返回的数据是一个流,它需要具有分块逻辑,然后连接起来以避免损坏

还包括对base64进行编码,将其推入数据库,然后将其取回,解码并将其推入浏览器。我不打算就这样离开它,但是我把它设置成这样来测试整个循环

router.get('/echosign/agreement/:id', function(req, res) {
  if (req.user !== 'myUserId') {
    console.log(req.user);
    res.redirect('/');
  } else {

    var request = require('request');
    var data = [];

    request({
      baseUrl: 'https://api.na1.echosign.com/api/rest/v5',
      url: '/agreements/' + req.params.id + '/combinedDocument',
      headers: {'Access-Token': process.env.ECHOSIGN_INTEGRATIONKEY}
    }).on('data', function(chunk){
        data.push(chunk);
      })
      .on('end', function(){
        data = Buffer.concat(data).toString('base64');

        client.connect(function(err) {
          if(err) {
            return console.error('could not connect to postgres', err);
          }
          client.query("UPDATE agreements SET file = '" + data + "' WHERE agreementid = '" + req.params.id + "' RETURNING agreement, file", function(err, result) {
            if(err) {
              return console.log(result, err);
            }
            client.end();
            res.set({
              'Content-Type': 'application/pdf;charset=UTF-8',
              'Content-Disposition': "inline; filename='" + result.rows[0].agreement.name + ".pdf'"
            });
            res.send(new Buffer(result.rows[0].file, 'base64'));
          });
        });
      });
    }
});