【问题标题】:Node request module with fs.createWriteStream() creates an empty file使用 fs.createWriteStream() 的节点请求模块创建一个空文件
【发布时间】:2019-07-04 01:20:26
【问题描述】:

我正在尝试将外部 URL 上传到我的服务器。这是我到目前为止得到的结果

var fs = require('fs');
var request = require('request');
var path = require('path');
const imagesFolder = 'downloadedAssets/imgs';

function download(url, dest, filename, cb) {
    var file = fs.createWriteStream(dest + "/" + filename + path.extname(url));

    request( {url: url}, function(err, response) {
        if(err) {
            console.log(err.message);
            return;
        }

        response.pipe(file);

        file.on('error', function(err) {
            console.log(err.message);
            file.end();
        });
        file.on('finish', function() {
            file.close(cb);
        });
   });
}

然后执行函数...

var url = 'http://pngimg.com/uploads/spongebob/spongebob_PNG44.png';

download(url, imagesFolder, 'sponge', function onComplete(err) {
    if (err) {
        console.log(err.message);
    } else {
        console.log('image uploaded to server');
    }
});

这不会引发任何错误,它会创建一个文件名海绵.png,但该文件是空的。知道为什么吗?

【问题讨论】:

    标签: javascript node.js fs node-request


    【解决方案1】:

    你可能把官网上的例子弄混了

    尝试使用pipe(),如下所示。

    function download(url, dest, filename, cb) {
        var file = fs.createWriteStream(dest + "/" + filename + path.extname(url));
    
        request( {url: url}).pipe(file);
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-28
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2015-07-04
      相关资源
      最近更新 更多