我正在尝试在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();
文件下载机制在我的系统中运行良好。
当我将代码部署到远程服务器并进行检查时,只会出现此错误。
有人可以帮我吗?如何解决这个问题。 提前致谢。
答案 0 :(得分:0)
要使用Box Node SDK,必须在Box Developer Console中创建Box应用程序。然后,您需要配置和授权该应用。可以找到一个示例here
您现在可以编写使用Box SDK与Box应用程序/帐户进行对话的节点应用程序。 here找到了一个如何连接它的示例。
可从Box的SDK文档here中找到从Box下载文件的代码。但是在下载文件之前,您需要使用其他getting a folder's items或search等SDK方法来查找其文件ID,以获取内容。
Box中根文件夹的文件夹ID始终为0
,这是搜索各种文件或文件夹ID编号时的好起点。