2016-06-10 1 views
0

Nouveau à Cordova (et JS), s'il vous plaît soyez doux.Appareil photo Cordova retournant guid pas b64 ou chemin w/"xxx.png". Besoin de fichier pour le téléchargement

J'essaie de faire en sorte que mon application prenne des photos, et tout fonctionne correctement jusqu'à ce qu'il soit temps de les télécharger sur le serveur. Les photos prennent bien, éditent des travaux (si édités choisis). Ce que j'obtiens cependant, est imageData (variable de la documentation) avec ce qui semble être un guid encodé par URL. (J'ai essayé un atob juste pour être sûr - ce n'est pas b64 - ce qui est clair, mais juste au cas où). La documentation a même une section qui dit:

function onPhotoDataSuccess(imageData) { 
// Uncomment to view the base64 encoded image data //<--- this... 
// console.log(imageData); 
.... 
} 

mais si je regarde droit là, avant que quelque chose arrive, je reçois quelque chose comme:

blob:http%3A//localhost%3A4400/5d142c27-3908-4db4-87dd-0a22d6e5fd62 

J'ai essayé d'envoyer l'appareil photo. DestinationType.DATA_URL, FILE_URI, etc. tous. Je comprends toujours - les options ne semblent pas avoir d'importance.

Donc, j'ai un blob. Si j'essaie de l'obtenir avec une requête xhr, j'obtiens une erreur 500. Si j'essaie de l'obtenir avec l'addon d'aide de fichier (window.FilePath .... Je ne me souviens pas du nom, mais c'est cordova), cela ne fonctionne pas. Je ne pense pas que l'on aime les blobs ou quelque chose.

Si je tente de naviguer jusqu'à l'emplacement, je reçois simplement:

Cannot GET /5d142c27-3908-4db4-87dd-0a22d6e5fd62 

Si je tente de naviguer à quelque chose comme:

content://media/external/images/media/2/d085fb44-de36-46ed-93a4-73f140f4bc3d 

échoue également.

si je partage le GUID et atob il (en remplaçant le "-"), je le vent avec quelque chose comme:

q×xÓMz-÷_u-ã®´-iÞ 

Je ne pense pas que ce soit ça ...

I J'ai essayé de comprendre ça depuis des heures maintenant. Quelqu'un peut-il me diriger dans la bonne direction s'il vous plaît? J'ai regardé d'autres articles, mais rien ne semble fonctionner. Je suis sûr que c'est à cause du format que je reçois.

Si cela est simple, mes excuses. Je suis nouveau à l'OS, la langue, et cordova, et en essayant de mon mieux ici. Je ne suis pas sûr de mes prochaines étapes.

Si plus de code est nécessaire, s'il vous plaît faites le moi savoir et je vais le mettre à jour. C'est quand même assez bien passé.

Répondre

0

Si quelqu'un d'autre se présente ici, c'est une solution correcte (à partir d'aujourd'hui). Je l'ai trouvé à: Using PhoneGap, How to get base64 image data of the photo chosen from photo library in iPhone, crédit à revathy-durairajan:

créer cette fonction.

function encodeImageUri(imageUri) { 
var c = document.createElement('canvas'); 
var ctx = c.getContext("2d"); 
var img = new Image(); 
img.onload = function() { 
    c.width = this.width; 
    c.height = this.height; 
    ctx.drawImage(img, 0, 0); 
}; 
img.src = imageUri; 
var dataURL = c.toDataURL("image/jpeg"); 
return dataURL; 

}

Appelez cette fonction avec le imageData

var testtest = encodeImageUri(imageData); 

fait.