Node js和浏览器:暂停和恢复文件下载

时间:2019-04-29 10:57:15

标签: node.js browser box

我正在使用box中的nodejs在客户端进行文件下载。

我有一个网址框。

当用户在浏览器中点击框网址时,

https://www.example.com?url=https://box.com/file/123

我正在遵循的过程是:

在节点js中,获取框网址并向box.com发送请求

  const obj = urlParse.parse(fileUrl, true);
  const creq = https.request(obj, (cres) => {

  cres.setEncoding('utf8');

if (cres.statusCode === 200) {
  res.writeHead(cres.statusCode, 
    { 
      'Content-Type': 'application/octet-stream',
      'Content-Disposition' : cres.headers['content-disposition']
    }
  );
} else {
  res.writeHead(cres.statusCode, 
    { 
      'Content-Type': 'application/json'
    });
}

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

cres.on('close', function(){
  return res.end();
});

cres.on('end', function(){

  return res.end();
});

}).on('error', function(e) {
return res.end(e.message);
});

creq.end();

我面临的问题是,在生产中,如果有时网络不正常或生产中速度不高-节点服务器,那么在浏览器中它会显示错误为网络失败-服务器错误

所以我想实施,在网络状况不佳时暂停,在网络状况良好时恢复。

任何人都可以帮我解决这个问题。

过程为:

要求: 浏览器->节点js-> Box.com 响应: Box.com-> Node js->浏览器(逐块读取文件数据)

如果网络不好,则由于网络故障而出错。

因此,如果网络不好,我需要在节点js和浏览器中暂停文件下载,当网络良好时,它将自动在浏览器和节点js中恢复下载。

因此,即使网络故障,该文件也将得到下载,而不是向用户显示网络故障-服务器错误信息。

0 个答案:

没有答案