2013-06-06 15 views
6

Sto scrivendo la mia prima app per Android con PhoneGap, ma sono un po 'confuso dalla documentazione di FileReader. Ho bisogno di prendere un file immagine e convertirlo in una stringa Base64 usando il metodo readAsDataURL(). From their documentation:PhoneGap readAsDataURL

function win(file) { 
var reader = new FileReader(); 
reader.onloadend = function(evt) { 
    console.log("read success"); 
    console.log(evt.target.result); 
}; 
reader.readAsDataURL(file); 
}; 
var fail = function(evt) { 
console.log(error.code); 
}; 
entry.file(win, fail); 

ho capito praticamente tutti che, fatta eccezione per l'ultima riga: entry.file (win, fallire). Nowhere è definito come voce, ma presumo che sia un oggetto FileEntry. Il problema è che non ho avuto molta fortuna a trovare la documentazione su come generare l'oggetto FileEntry, e a che punto passo in un percorso di file.

+0

sì, la documentazione è ancora orribile –

risposta

18

Ok, finalmente ha funzionato. Documentazione orribile online! Sto postando il mio codice nel caso in cui altri abbiano problemi:

window.resolveLocalFileSystemURI(filePath, 
    // success callback; generates the FileEntry object needed to convert to Base64 string 
    function (fileEntry) { 
     // convert to Base64 string 
     function win(file) { 
      var reader = new FileReader(); 
      reader.onloadend = function (evt) { 
       var obj = evt.target.result; // this is your Base64 string 
      }; 
      reader.readAsDataURL(file); 
     }; 
     var fail = function (evt) { }; 
     fileEntry.file(win, fail); 
    }, 
    // error callback 
    function() { } 
); 
+0

Funziona incredibilmente! –