【发布时间】:2018-02-07 16:25:50
【问题描述】:
我有一个要求是使用 nodejs 从服务器下载文件。
下面是我下载文件的代码。
test.js
function downloadFile() {
var fsModule = 'fs';
var fs = require(fsModule);
var request = require('request');
var deferred = $q.defer();
var downloadRequest = request.get({
encoding: null,
url: 'https://test.com/api/assets/35007/raw',
headers: {
'Authorization': 'Basic AuthorizationValue'
}
});
downloadRequest.addListener('response', function (response) {
if (response.statusCode != 200) {
console.log('Error in downloading file');
deferred.resolve(false);
} else {
var options = {defaultEncoding: 'binary'};
var writeStream = fs.createWriteStream('c:/testDownloadFile.mp4', options);
response.addListener('data', function (chunk) {
console.log('chunk length - ',chunk.length);
writeStream.write(chunk);
});
response.addListener("end", function() {
writeStream.end();
console.log('No error in download and resolved true');
deferred.resolve(true);
});
}
});
}
downloadFile();
我可以通过以下命令使用节点成功运行此代码,并以块的形式给出响应。所以这段代码没有内存问题。
节点测试.js
但是当我使用 browserify 在浏览器中运行此代码时,它不会以块的形式给出响应。所以它为大文件创建了一个问题。
- browserify或request/buffer模块有问题吗?
- 此问题的根本原因应该是什么?
- 能否为我提供分块下载文件的解决方案或替代方法?
节点版本: 6.9.2
浏览: ^12.0.0
【问题讨论】:
标签: node.js request browserify node-modules chunks