繁体   English   中英

本地文件下载已损坏

[英]Local file download is corrupted

我正在尝试使用 nodejs 将文件下载到我的 windows pc

我尝试了以下代码。 问题是我从nodejs下载的文件是185kb,实际原始文件大小是113kb(通过直接从浏览器下载找到)

request = require('request');

function download(url, dest, cb){
  request.head(url, function(err, res, body){
    request(url).pipe(fs.createWriteStream(dest)).on('close', function(){
        cb();
    });
  });
};

我还尝试使用不同的代码下载文件

function download(url, dest, cb) {
    var file = fs.createWriteStream(dest);
    var request = https.get(url, function (response) {
        response.pipe(file);
        file.on('finish', function () {
            file.close(cb);
            file.end();
        });
    });
}

但同样的错误发生了

问题是我试图在photoshop中打开该文件,但它失败了,说文件已损坏,请帮忙

此代码(使用内置的 https 模块)应该可以正常工作。 stream会自动关闭,不需要关闭,创建写文件stream时autoClose参数默认为true。

请参阅以下文档: fs.createWriteStream

如果文件仍然太大,很可能您没有使用直接图像链接,请尝试在浏览器中选择“查看图像”/“在新选项卡中打开图像”等并使用该链接。

const https = require("https");
const fs = require("fs");

const url = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/FullMoon2010.jpg/1024px-FullMoon2010.jpg";
const fileStream = fs.createWriteStream("test.jpg");
https.get(url, response => {
    response.pipe(fileStream);
});

您还可以使用请求库:

const request = require("request");
const fs = require("fs");

const url = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/FullMoon2010.jpg/1024px-FullMoon2010.jpg";
const fileStream = fs.createWriteStream("request-test.jpg");
const req = request(url);

req.on("response",  response => {
    response.pipe(fileStream);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM