gpt4 book ai didi

javascript - 使用 Node 下载的图像为 209 字节,但可以在 chrome 中访问该图像

转载 作者:行者123 更新时间:2023-12-03 00:01:29 25 4
gpt4 key购买 nike

我正在通过 Node 下载图像。在大多数情况下,这可以正常工作,但是某些图像以 209 字节 保存。但是当直接在 Chrome 中查看这些图像时 images完美正常打开。

标题

headers:
connection: "close"
content-length: "209"
content-type: "text/html"
date: "Thu, 14 Mar 2019 00:03:39 GMT"
expires: "Thu, 14 Mar 2019 00:03:39 GMT"
mime-version: "1.0"

状态

statusCode: 400
statusMessage: "Bad Request"

使用的代码

const download = async function(uri, filename){
return new Promise((resolve, reject) => {
request.head(uri, function(err, res) {
if (res) {
request(uri).pipe(fs.createWriteStream(filename)).on('close', resolve);
} else {
reject(uri);
}
});
})
};

const downloadImages = async function (dirName, images){
if (await !fs.existsSync(dirName)){
await fs.mkdirSync(dirName);
}
await asyncForEach(JSON.parse(images), async (image, index) => {
const fileName = `${dirName}/${index}.jpg`;
try {
await readFile(fileName)
}
catch (err){
if(err) {
try {
await download(image, fileName);
} catch (error) {
console.error(error);
}
}
}
})
}

最佳答案

向您的请求添加 2 个 header :

Accept: image/jpeg
Accept-Encoding: gzip, deflate

示例:

request({
uri: uri,
headers: {
'Accept': 'image/jpeg',
'Accept-Encoding': 'gzip, deflate'
}
}).pipe(fs.createWriteStream(filename)).on('close', resolve);

编辑一些解释

问题出在服务器上,而不是客户端上。

因为它在 Chrome 中有效,所以您可以尝试通过将所有请求 header 复制到 Node.js 代码中来模仿 Chrome 的请求。

一旦代码可以运行,请尝试将其一一删除,看看有什么必要。
对我来说,它仅适用于提到的 2 个

Chrome DevTools

关于javascript - 使用 Node 下载的图像为 209 字节,但可以在 chrome 中访问该图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com