2016-09-26 18 views
3

Ich versuche, ein FormData Objekt über $http Anbieter in AngularJs zu buchen.Hochladen von Datei mit Angular/Cordova

Im Browser ist es möglich, den Dateiwert input[type=file] an FormData anzufügen und über $http zu veröffentlichen. etwas wie:

formData.append('file', inp.files[0], 'nai.jpg'); 
formData.append('text', 'hello'); 
$http.post('url', formData, { 
    transformRequest: angular.identity, 
    headers: { 'Content-Type': undefined } 
}); 

Und Server bekam Post Anfrage mit zwei Körperfelder. Aber in Cordova Apps, ist input[type=file] nicht verfügbar, so kann ich von nativen Plugins wie diese fileURI von Benutzer erhalten:

navigator.camera.getPicture(function(fileURI) { 
    // i got fileURI 
}); 

Nun, mir bitte erklären, wie ich fileURI als Datei zu formData setzen und senden, dass durch $http Anbieter von Angular (nicht FileTransfer).

Antwort

0

Cordova gibt auch die Base64-Daten des Bildes, wenn wir Option im Konfigurationsobjekt angeben. damit Sie die gleichen base64-Daten an den Service weitergeben können.

var cameraOptions = { 
    destinationType : 0 /*(DATA_URL -- For base64 data)*/ 
} 
navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions); 
+0

thx. Ja, aber dieser Weg ist zu schwer. Stellen Sie sich vor, dass ich 5mb Zeichenfolge in Javascript-Variable halten soll, bevor ich das einreiche. – Nainemom