2017-11-12 81 views
7

Obecnie używam następującego podejścia, w którym podaje ono szczegóły pliku, ale nie rzeczywisty obiekt, który wydaje się pochodzić z javascript/jQuery. Czy ktoś ma wskazówkę, jak uzyskać obiekt pliku z URI pliku/natywnego identyfikatora URI z mobilnego systemu plików ios/android za pomocą cordova i javascript?Jak uzyskać obiekt pliku na oddzwonienie powodzenia z kamery cordova?

Poniżej znajduje się fragment Używam obecnie ..

window.resolveLocalFileSystemURL(
    filepath, 
    function(fileEntry) { 
    fileEntry.file(
     function(file) { 
     var reader = new FileReader(); 
     reader.onloadend = function() { 
      var imgBlob = new Blob([this.result], {type: "image/jpeg"}); 
      var uploadedFile = imgBlob; 
      uploadedFile.name = file.name; 
      alert("Importing Asset from Camera.. " + uploadedFile.name); 
      alert(uploadedFile.type); 
      alert(uploadedFile.size); 
      importAsset(uploadedFile); 
     }; 
     reader.readAsArrayBuffer(file); 
     }, 
     function(error) { alert("Error in fileEntry.file():" + error) }) 
    }, 
    function(error) { alert("Error in window.resolveLocalFileSystemURL():" + error) } 
); 

Uwaga: FileTransfer.upload() nie będzie działać w moim przypadku.

Przede snippet używam po wzięciu od Append image file to form data - Cordova/Angular po przejściu przez istniejącą Q & A from #SO

+0

Nie mogę wysłać złożonego żądania wieloczęściowego/formularza danych, które zawiera wiele obiektów blob podczas korzystania z funkcji Filetransfer.upload(). stąd szukając alternatyw. –

Odpowiedz

-1

Base64 Obraz Prześlij będzie działać zarówno w iOS/Android jak próbowałem: Jak dla iOS Jest tylko jednym ze sposobów wyświetlania obrazu jest użycie formatu base64. Możesz użyć cordova-camera-plugin do wygenerowania obrazu base64 i wstawienia znacznika HTML HTML. Ustawiłem flagę, aby uzyskać dane w jpeg, base64 w wtyczce kamery.

<img id="cardImg"> 

zapisać obraz base64 w javascript Zmienna jak:

var imgdata=data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg== 

po prostu przekazać dane do img tag HTML jako:

cardImg.src=imgdata; 

Gotowe!

+1

Nie szukam wyświetlania jako obrazu. Przeczytaj uważnie to pytanie jeszcze raz. –

+0

Mam opublikowaną odpowiedź z metodą Base64, aby wyświetlić obraz, ponieważ jest bardziej ogólny i działa zarówno na Androida, jak i iOS. Android powoduje pewien problem: w przypadku nowszych aplikacji kierowanych na Androida 7.0 (poziom interfejsu API 24) i wyższych przesyłanie pliku: // URI w obrębie granicy pakietu powoduje wyjątek FileUriExposedException. Dlatego w natywnym systemie Android dostajemy treść: // uri zamiast pliku. – taranjeetsapra