Javascript nodejs木偶演员无法下载URL中带有特殊字符的图像文件
我想在本地计算机上下载两个图像:Javascript nodejs木偶演员无法下载URL中带有特殊字符的图像文件,javascript,node.js,https,puppeteer,Javascript,Node.js,Https,Puppeteer,我想在本地计算机上下载两个图像: 正如您可以在其urlö中将第一个图像视为一个特殊字符,但它仍然是您可以在线访问的有效url 我尝试使用我制作的node.js puppeter(版本“5.5.0”)脚本下载这两个图像,它尝试使用以下代码下载: function download(url, destination, cb) { return new Promise(async function (resolve, reject) { try { var file =
ö
中将第一个图像视为一个特殊字符,但它仍然是您可以在线访问的有效url
我尝试使用我制作的node.js puppeter(版本“5.5.0”)脚本下载这两个图像,它尝试使用以下代码下载:
function download(url, destination, cb) {
return new Promise(async function (resolve, reject) {
try {
var file = fs.createWriteStream(destination);
var request = https.get(url, function (response) {
response.pipe(file);
file.on('finish', function () {
file.close(cb); // close() is async, call cb after close completes.
resolve(true)
});
});
} catch (err) {
console.log('err saving file:', err)
reject()
}
});
}
async function debugDownload(){
let broken_imgUrl='https://45football.com/assets/resources/1134/medium/1035-nöggi-subliga-cf.jpg';
let broken_imgSavePath='/home/martin/Documents/projects/broken.jpg';
download(broken_imgUrl, broken_imgSavePath, function (x) { console.log('img download done'); });
let good_imgUrl='https://45football.com/assets/resources/675/medium/580-maritimo-cf.jpg'
let good_imgSavePath='/home/martin/Documents/projects/good.jpg';
await download(good_imgUrl, good_imgSavePath, function (x) { console.log('img download done'); });
}
运行debugDownload()
后,文件good.jpg
下载良好,但已损坏。jpg
只有707个字节,我无法打开它,这让我觉得我的下载功能有问题,它不适用于带有特殊字符的URL
问题是早期版本的nodejs默认没有encodeURI,因此我们得到了一个404notfound。只需添加encodeURI(url)
我不知道您使用的是哪个版本的节点。我通过使用特殊字符对url进行uri编码解决了这个问题,就是这样
function download(url, destination, cb) {
return new Promise(async function (resolve, reject) {
try {
var file = fs.createWriteStream(destination);
var request = https.get(encodeURI(url), function (response) { // modified
response.pipe(file);
file.on('finish', function () {
file.close(cb); // close() is async, call cb after close completes.
resolve(true)
});
});
} catch (err) {
console.log('err saving file:', err)
reject()
}
});
}
async function debugDownload(){
let broken_imgUrl='https://45football.com/assets/resources/1134/medium/1035-nöggi-subliga-cf.jpg';
let broken_imgSavePath='/home/martin/Documents/projects/broken.jpg';
download(broken_imgUrl, broken_imgSavePath, function (x) { console.log('img download done'); });
let good_imgUrl='https://45football.com/assets/resources/675/medium/580-maritimo-cf.jpg'
let good_imgSavePath='/home/martin/Documents/projects/good.jpg';
await download(good_imgUrl, good_imgSavePath, function (x) { console.log('img download done'); });
}