node.js - 在 Nodejs 中使用 Unirest 将图像保存到文件
问题描述
我正在尝试使用 Unirest 下载图像,但保存后图像已损坏
const downloadChapterPage = async (url, pageName) => {
return new Promise(async (resolve) => {
unirest.get(url)
.end(async (res) => {
if (res.error) {
console.log("Error when downloading page : " + pageName, " ", res.error)
resolve();
}
fs.writeFileSync(pageName + '.jpg', res.raw_body);
resolve();
});
});
}
downloadChapterPage('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png', 'page1');
我也是这样起诉的,但它也不起作用
const downloadChapterPage = async (url, pageName) => {
return new Promise(async (resolve) => {
unirest.get(url)
.end(async (res) => {
if (res.error) {
console.log("Error when downloading page : " + pageName, " ", res.error)
resolve();
}
const data = Buffer.from(res.raw_body);
fs.writeFileSync(pageName + '.jpg', data, 'binary');
resolve();
});
});
}
downloadChapterPage('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png', 'page1');
解决方案
这个改装怎么样?
修改点:
- 我认为编码可能是您的问题的原因。所以请添加
encoding(null)
到请求中。 - 此图像的 mimeType
https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
是image/png
.
修改后的脚本:
const downloadChapterPage = async (url, pageName) => {
return new Promise(async (resolve) => {
unirest.get(url)
.encoding(null) // Added
.end(async (res) => {
if (res.error) {
console.log("Error when downloading page : " + pageName, " ", res.error)
resolve();
}
const data = Buffer.from(res.raw_body);
fs.writeFileSync(pageName + '.png', data, 'binary'); // Modified or fs.writeFileSync(pageName + '.png', data);
resolve();
});
});
}
参考:
推荐阅读
- javascript - React 17:代码执行两次的问题
- javascript - NodeJS Node-Fetch Call Stripe 中的 JSON 错误
- sql - SCD 类型 2 - 处理日内变化?
- python - 从雪花中获取数据
- hadoop - hdfs-site.xml 环境变量
- nginx - NGINX 只允许来自某个域和某个 IP(同时)
- c# - 将 1 种测试方法关联到 2 个 azure 测试用例
- node.js - 如何将前端和后端验证添加到节点 js 用户身份验证项目?
- vba - Outook VBA:并非所有邮件项目都无法识别
- python - 一对多关系未显示在管理员中