我正在使用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中恢复下载。
因此,即使网络故障,该文件也将得到下载,而不是向用户显示网络故障-服务器错误信息。