javascript - 本地下载的文件已损坏

标签 javascript node.js

我正在尝试使用nodejs将文件下载到我的Windows电脑

我尝试了以下代码。问题是我从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 模块)应该可以正常工作。流会自动关闭,无需关闭,创建写文件流时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);
});

关于javascript - 本地下载的文件已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303172/

相关文章:

javascript - iPad - 在输入字段中输入时文本不可见(类型 ="text")

javascript - 如果未定义某些 CSS 类,则使用自定义 CSS 样式

node.js - 用于多项选择题和答案的 MongoDB 模式设计

javascript - Node 应用程序无法识别功能

javascript - 如何使用nodejs标记m4a音乐

javascript - Grunt - 如何从外部项目运行常见的外部任务

javascript - 旋转后平移缓冲区

javascript - 使用 jquery 或 js 更改包含 html 的变量中禁用的属性

node.js - 安装 API Connect 工具包时完整性校验和失败 #apiconnect

javascript - 正则表达式获取字符串末尾的单词