【问题标题】:Download image with node-request使用节点请求下载图像
【发布时间】:2013-01-23 12:35:51
【问题描述】:

嘿,我是 node js 的真正初学者,所以请多多包涵。我正在尝试下载文件(图像)这是我拥有的代码:

function downloadFileFromURL( url, callback ) 
{
    file_name = path.basename(url);

    var wstream = fs.createWriteStream(file_name);

    wstream.on('error', function (err) {
        console.log(err, url);
    });

    wstream.on( 'close', function(){

        console.log( "finished downloading: ", url, this.path );

    });

    request(img_url).pipe( wstream );
}

如果我使用我的应用解析博客提要,此函数会下载大约一半的图像。我可以从浏览器中很好地看到图像。文件被创建,但其中一些保持在 0 字节。

我正在解析的示例提要是:http://feeds.feedburner.com/ButDoesItFloat?format=xml

我在这里看到了这个问题:Writing image to local server 这是相似的,很想看看它是如何使用节点请求完成的

【问题讨论】:

  • 很抱歉,如果不清楚,我的问题是为什么有些文件会被完全下载,为什么有些文件没有使用 node-request 模块以及是否有人遇到过类似的问题。与此同时,我在代码上做了更多工作,并用这里的代码替换了它:stackoverflow.com/questions/5294470/… 现在它工作正常,根本不使用请求模块。也许这是一个错误,我宁愿在 github 上问...

标签: node.js


【解决方案1】:

看看http-get 来实现它。您只需要传递两个参数,第一个是 URL,第二个是保存文件的路径,非常简单。回调函数将文件名返回为“result.file”。检查下面的代码并尝试一下:

var http = require('http-get');
http.get('www.ohmydear.com/thesite.png', '/path/to/thesite.png', function (error, result) {
    if (error) {
        console.error(error);
    } else {
        console.log('File downloaded at: ' + result.file);
    }
});

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 2014-02-22
    • 2023-03-29
    • 2016-10-11
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2019-11-25
    相关资源
    最近更新 更多