【问题标题】:nodejs' request module doesn't give response in chunksnodejs的请求模块不以块的形式给出响应
【发布时间】: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 在浏览器中运行此代码时,它不会以块的形式给出响应。所以它为大文件创建了一个问题。

  1. browserifyrequest/buffer模块有问题吗?
  2. 此问题的根本原因应该是什么?
  3. 能否为我提供分块下载文件的解决方案或替代方法?

节点版本: 6.9.2

浏览: ^12.0.0

【问题讨论】:

    标签: node.js request browserify node-modules chunks


    【解决方案1】:

    browserify 使用的 'http' 与 nodejs 使用的模块不同,它是在客户端运行时通过脚本修改的。此外,浏览器以不同的方式处理请求。

    因此,修改后的“http”或浏览器可能会缓存您的块并将它们放在一起。

    【讨论】:

    • 感谢您的回复,但代码没有任何 CORS 错误。我也可以下载文件,但不能分块下载。
    • @NIravModi 我对此很粗心......我已经更新了它。我认为答案可以在“http”模块和“请求”模块中找到。
    【解决方案2】:

    只是一个简短的建议,它的价值是什么...在您的测试环境中,您是否有任何模块保存在缓存中,而这些模块在浏览器中进行测试时未使用。我提出这个建议是因为不需要 q 模块。

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 2017-10-13
      • 2011-10-23
      • 1970-01-01
      • 2014-06-06
      • 2020-04-24
      相关资源
      最近更新 更多