尝试从Node JS下载文件时,在浏览器中出现如下错误:网络错误失败

时间:2019-04-09 12:06:58

标签: node.js box

我正在尝试在box.com中下载位于我的存储中的文件。

当用户发出具有特定ID的api请求时,我从box.com获取与该ID相关的文件url,并在node js中再次进行另一个api调用以获取文件块并将其返回给客户端。

过程是:

用户通过以下方式进行api调用:/ api?id = 123到节点js

在节点js中,我正在获取与ID 124相关的文件网址。

获得的文件网址为:https://box.com/xyz_123

使用此文件url,我再次对Box服务器进行api调用,并逐块获取文件并将其返回给客户端。

文件即将在5秒内完成,然后在浏览器中显示为错误:网络失败。

这是我调用框url来获取文件流并逐块返回客户端的方式。

const creq = https.request(boxurl, (cres) => {
    cres.setEncoding('utf8');
      res.writeHead(cres.statusCode, 
        { 
          'Content-Length': cres.headers['content-length'],
          'Content-Type': 'application/octet-stream',
          'Content-Disposition' : cres.headers['content-disposition']
        }
      );

    // wait for data
    cres.on('data', function(chunk){
      res.write(chunk);
    });

    cres.on('close', function(){
      // closed, let's end client request as well 
      return res.end('Success');
    });

    cres.on('end', function(){
      // finished, let's finish client request as well 
      return res.end('Success');
    });

  }).on('error', function(e) {
    // we got an error, return 500 error to client and log error
    return res.end(e.message);
  });

  creq.end();

文件下载机制在我的系统中运行良好。

当我将代码部署到远程服务器并进行检查时,只会出现此错误。

有人可以帮我吗?如何解决这个问题。 提前致谢。

1 个答案:

答案 0 :(得分:0)

要使用Box Node SDK,必须在Box Developer Console中创建Box应用程序。然后,您需要配置和授权该应用。可以找到一个示例here

您现在可以编写使用Box SDK与Box应用程序/帐户进行对话的节点应用程序。 here找到了一个如何连接它的示例。

可从Box的SDK文档here中找到从Box下载文件的代码。但是在下载文件之前,您需要使用其他getting a folder's itemssearch等SDK方法来查找其文件ID,以获取内容。

Box中根文件夹的文件夹ID始终为0,这是搜索各种文件或文件夹ID编号时的好起点。