2017-11-12 13 views
7

Hiện tại tôi đang sử dụng cách tiếp cận sau đây, nơi nó đưa ra chi tiết của tập tin nhưng không phải là đối tượng thực tế nó có vẻ như một trong những chúng tôi nhận được từ trong javascript/jQuery. Có ai có manh mối làm thế nào để có được các đối tượng tập tin từ File URI/native URI từ hệ thống tập tin di động ios/android bằng cách sử dụng cordova và javascript?Làm thế nào để có được đối tượng tập tin trên gọi lại thành công của máy ảnh cordova?

Dưới đây là đoạn mã Tôi hiện đang sử dụng ..

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) } 
); 

Lưu ý: FileTransfer.upload() sẽ không làm việc trong trường hợp của tôi.

Trên đoạn mã tôi đang sử dụng sau khi uống từ Append image file to form data - Cordova/Angular sau khi đi qua hiện Q & A từ #SO

+0

Tôi không thể gửi yêu cầu nhiều phần/dữ liệu biểu mẫu phức tạp làm cho nhiều đốm màu phức tạp khi sử dụng Filetransfer.upload(). do đó tìm kiếm các giải pháp thay thế. –

Trả lời

-1

Base64 Hình ảnh Tải lên sẽ làm việc cả trong iOS/Android như tôi đã cố gắng: Đối với iOS Có duy nhất là Một cách để hiển thị hình ảnh là sử dụng định dạng base64. Bạn có thể sử dụng cordova-camera-plugin để tạo image base64 và đặt thẻ img của HTML.I đã đặt cờ để nhận dữ liệu trong jpeg, base64 trong plugin máy ảnh.

<img id="cardImg"> 

Store ảnh base64 trong javascript biến như:

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

Sau đó Đơn giản chỉ cần truyền dữ liệu đến img thẻ HTML như:

cardImg.src=imgdata; 

Xong!

+1

Tôi không tìm kiếm hiển thị dưới dạng hình ảnh. Vui lòng đọc kỹ câu hỏi một lần nữa. –

+0

Tôi đã đăng câu trả lời bằng phương pháp Base64 để hiển thị hình ảnh vì nó chung chung hơn và hoạt động ở cả Android và iOS. Android gây ra một số vấn đề: Đối với các ứng dụng gần đây nhắm mục tiêu Android 7.0 (API cấp 24) trở lên, việc chuyển một tệp: // URI trên một ranh giới gói sẽ gây ra một FileUriExposedException. Do đó trong android bản địa, chúng tôi nhận được nội dung: // uri chứ không phải là tệp. – taranjeetsapra

Các vấn đề liên quan