带有FS.CreateWriteStream()的Node请求模块创建一个空文件



我正在尝试将外部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');
    }
});

这不会丢下任何错误,并且会创建一个文件名Sponge.png,但文件为空。知道为什么?

您可能已经在官方网站上混合了示例

尝试使用pipe()如下。

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

相关内容

  • 没有找到相关文章

最新更新