gpt4 book ai didi

javascript - node.js 从 url 下载图像

转载 作者:搜寻专家 更新时间:2023-11-01 00:42:07 25 4
gpt4 key购买 nike

我的问题是从 url 下载具有未知扩展名的图像(可能是 jpg、png、jpeg 或 bmp)。所以我想检查图像的内容长度,如果它大于 0,则将其下载到文件,否则尝试使用其他扩展名下载图像等。

var fs = require('fs');
var request = require('request');
var xml2js = require('xml2js');
var Q = require('q');

var baseUrl = 'http://test.com/uploads/catalog_item_image_main/';

Q.nfcall(fs.readFile, "./test.xml", "utf8")
.then(parseSrting)
.then(parseProductsAsync)
.then(processProductsAsync)
;


function parseSrting(data){
return Q.nfcall(xml2js.parseString,data);
}

function parseProductsAsync(xmljsonresult){
return xmljsonresult.product_list.product;
}


function processProductsAsync(products){
products.map(function(product){

var filename = product.sku + ""; // - where is image name
filename = filename.replace(/\//g, '_');
console.log('Processing file ' + filename);

var imageUrl = baseUrl + filename + '_big.'; // + image extension

//There I want to check Content-Length of the image and if it bigger then 0, download it to file,
//else try download image with another extension and etc.

});
}

我正在使用 Node.js 的 Q promises 模块来避免回调 hell ,但有人可以帮我检查图像大小并将其保存到文件吗?

最佳答案

您可以检查响应的状态代码。如果是 200,则可以毫无问题地获取图像。

您可以使用文件扩展名数组和递归方法依次尝试每个文件扩展名。使用 request 模块,您可以这样做:

function processProductsAsync(products){
products.map(function(product){

var filename = product.sku + ""; // - where is image name
filename = filename.replace(/\//g, '_');
console.log('Processing file ' + filename);

var imageUrl = baseUrl + filename + '_big.'; // + image extension

fetchImage(imageUrl, filename, 0);
});

function fetchImage(url, localPath, index) {
var extensions = ['jpg', 'png', 'jpeg', 'bmp'];

if (index === extensions.length) {
console.log('Fetching ' + url + ' failed.');
return;
}

var fullUrl = url + extensions[index];

request.get(fullUrl, function(response) {
if (response.statusCode === 200) {
fs.write(localPath, response.body, function() {
console.log('Successfully downloaded file ' + url);
});
}

else {
fetchImage(url, localPath, index + 1);
}
});
}

关于javascript - node.js 从 url 下载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31105574/

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