/ / Récupérer l'octet d'image / base64 à partir de l'URL - javascript, parse.com, base64, bytearray

Obtenir l'image octet / base64 de l'URL - javascript, parse.com, base64, bytearray

Je recherche une solution où je peux fournirURL vers une image spécifique puis avec Javascript je récupère les données de cette image. J'ai déjà constaté que je ne pouvais pas simplement tirer un fichier, alors peut-être que le tableau d'octets ou la base64 suffiraient?

Pour être précis avant que quelqu'un ne vote contre cette question: je veux analyser l'URL et obtenir l'image sur mon serveur sous n'importe quelle forme. Il y a beaucoup de questions similaires, mais aucune ne répond à celle-ci.

Pourquoi ai-je besoin de ça? J'ai accès à l'API où je reçois également des URL d'image, mais je veux qu'elles soient téléchargées sur mon serveur via Background Job dans le service Parse.com (quelque chose comme CRON job). Je sais comment lier un fichier avec ParseObject, mais je ne trouve pas de solution pour télécharger l'image directement sur ParseCloud et le lier.

var Image = require("parse-image");
Parse.Cloud.job("getImagesJob", function(request, status) {
Parse.Cloud.useMasterKey();
var beerObj = Parse.Object.extend("My_class");
var query = new Parse.Query(beerObj);
query.first().then(function(objs) {
var brew = objs.get("brewery");
var bname = objs.get("beer_name");
//var fullName = brew + " " + bname;
var fullName = "Browar Name";
console.log(fullName);

return Parse.Cloud.httpRequest({
method: "GET",
url: "api server address",
headers: {
"Content-Type": "application/json;charset=utf-8"
},
params: {
q : fullName,
client_id : "...",
client_secret : "..."
}
}).then(function(httpResponse) {
var json = JSON.parse(httpResponse.text);
if(json.meta.code === 200){
if(json.response.beers.count > 0){

if(json.response.beers.items[0].beer.beer_label === "/default.png"){
console.log("brak etykiety dla " + fullName);

} else {
console.log("znaleziono etykietę dla " + fullName);
Parse.Cloud.httpRequest({ //NOT REACHING
url: json.response.beers.items[0].beer.beer_label,
success: function(response) {
// The file contents are in response.buffer.
var image = new Image();
return image.setData(response.buffer, {
success: function() {
objs.set("logo", image.data());
console.log("udalo sie dolaczyc");
},
error: function(error) {
// The image data was invalid.
console.error(error);
}
})
},
error: function(error) {
// The networking request failed.
}
});

}

} else {
// daj cokolwiek żeby się nie zacięło na jednym

console.log("Brak danych dla piwa: " + fullName);
}
}

}, function(httpResponse) {
console.error("Request failed with response code " + httpResponse.status + httpResponse.text);
});

}).then(function(obj) {
status.success("Zrobione");
}, function(error) {
status.error(error);
});
});

Réponses:

1 pour la réponse № 1

Vous pouvez utiliser parse-image module dans Cloud Code comme dans leur Documentation

var Image = require("parse-image");

Parse.Cloud.httpRequest({
url: YOUR_URL,
success: function(response) {
// The file contents are in response.buffer.
var image = new Image();
return image.setData(response.buffer, {
success: function() {
console.log("Image is " + image.width() + "x" + image.height() + ".");
},
error: function(error) {
// The image data was invalid.
}
})
},
error: function(error) {
// The networking request failed.
}
});

Avec le code ci-dessus, vous pouvez obtenir des données d'image dans le tampon en utilisant image.data(). Pour obtenir des données base64, utilisez image.data().toString("base64")