使用node express js下载文件

Downloading file with node express js

本文关键字:下载 文件 js express node 使用      更新时间:2023-09-26

我想用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]值不会随着文件扩展名增加我的文件名。我甚至不能在函数外通过引用来设置变量

    我认为你的管道在'filename'获得任何数据之前被触发。
  • 不应该使用'/'分割

试试这个:

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);
     })

注:您正在下载'request'模块,而不是express。