【问题标题】:Downloading file with node express js使用 node express js 下载文件
【发布时间】:2017-01-12 06:42:14
【问题描述】:

我正在尝试使用 express js 下载文件,但遇到了一些问题。
下面是函数:

var download = function(uri, filename, callback) {
  request
  .get(uri)
  .on('response', function (response) {
  var ext = response.headers['content-type'].split('/');
  filename += '.' + ext[1];
  })
  .pipe(fs.createWriteStream(filename));
};

问题是我不知道文件的扩展名,所以我需要在响应头中获取它,但ext[1] 值不会用文件扩展名增加我的文件名。我什至不能通过引用来设置变量以在函数之外执行它。

【问题讨论】:

标签: javascript node.js file express download


【解决方案1】:
  • 我认为您的管道在“文件名”获取任何数据之前被触发。
  • 你不应该用'/'分割

试试这个:

var mime = require('mime-types'); // After npm install mime-types

request
    .get(uri)
    .on('response', function (response) {

        var responseType = (response.headers['content-type'] || '').split(';')[0].trim();
        var ext = mime.extension(responseType);

        filename += '.' + ext;

        var fileStream = fs.createWriteStream(filename)
                    .on('finish', function() {
                        //Download complete
                    })

        this.pipe(fileStream);
     })

附:您正在使用“请求”模块下载,而不是使用 express。

【讨论】:

  • 嘿耶耶!感谢您的答复!好吧,我需要在响应函数之外获取文件名,我怎样才能返回这个文件名或通过引用设置变量?再次感谢!
  • 你可以在函数外定义文件名,但你永远不知道它什么时候改变。如您所知,NodeJS 是异步的。
猜你喜欢
  • 2016-08-06
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 2015-07-03
相关资源
最近更新 更多