我正在尝试使用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/