Ich habe eine Meteor-Anwendung und versuche einige Bilder aus .epub
Dateien zu extrahieren und sie dann in Cloudinary zu speichern, aber ich habe kein Glück. Hier ist, was ich bisher getan:Upload von Blobdaten nach Cloudinary
epub.js
Mit lade ich die .epub
Datei und lesen Sie die Bilddaten:
const book = ePub('path_to_file.epub');
const cover = book.coverUrl();
/* cover._result returns this:
"blob:http://localhost:3000/6433bd4e-13dc-462b-b7be-e9654ad06c18"
*/
ich manuell cover._url
zu einer Bildquelle zuordnen kann und das Bild macht, wie erwartet:
$('#bookImage').attr('src', cover._result)
ich habe versucht, die cover._result
, "blob:http://localhost:3000/6433bd4e-13dc-462b-b7be-e9654ad06c18"
wie so laden:
Cloudinary.upload(cover._result,{
folder: 'Books',
resource_type: 'raw',
},function(err, res){
if (err){
console.log(err);
} else {
console.log(res);
}
});
und ich bekomme keine Antwort
Ich habe auch versucht dies:
const myFile = new File([cover._result], "new_file.jpg", {type: "image/jpg"});
Cloudinary.upload(myFile,{...})
Die Datei-Uploads, aber seine Datenmüll und nicht lesbar
Schließlich habe ich versucht, die Datei umzuwandeln, wie dies base64 :
const toDataUrl = function(cover, callback) {
const xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
callback(reader.result);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', cover);
xhr.send();
}
/******************/
toDataUrl (cover._result, function(base64Img) {
Cloudinary.upload(base64Img,{
folder: 'Books',
resource_type: 'raw',
},function(err, res){
if (err){
console.log(err);
} else {
console.log(res);
}
});
})
Ich bekomme keine Antwort von der Cloudinary.upload
Funktion.
Meine Frage ist, unterstützt Cloudinary diese Art von Funktionalität?
Danke.
GELöST
Das war ein Problem mit dem Meteor-Paket selbst.
Ich hatte dies zu ändern:
toDataUrl (cover._result, function(base64Img) {
Cloudinary.upload(base64Img,{
folder: 'Books',
resource_type: 'raw',
},function(err, res){
if (err){
console.log(err);
} else {
console.log(res);
}
});
})
dazu:
DatentoDataUrl (cover._result, function(base64Img) {
Cloudinary._upload_file(base64Img,{
folder: 'Books',
},function(err, res){
if (err){
console.log(err);
} else {
console.log(res);
}
});
})
und das Bild ohne Problem hochgeladen.