2017-11-12 28 views
7

वर्तमान में मैं निम्नलिखित दृष्टिकोण का उपयोग कर रहा हूं जहां यह फ़ाइल का ब्योरा दे रहा है लेकिन वास्तविक वस्तु नहीं है जैसा कि हम जावास्क्रिप्ट/jQuery में प्राप्त करते हैं। क्या किसी को भी कॉर्डोवा और जावास्क्रिप्ट का उपयोग कर मोबाइल आईओएस/एंड्रॉइड फाइल सिस्टम से फाइल यूआरआई/मूल यूआरआई से फ़ाइल ऑब्जेक्ट प्राप्त करने का संकेत मिलता है?कॉर्डोवा कैमरे की सफलता कॉलबैक पर फ़ाइल ऑब्जेक्ट कैसे प्राप्त करें?

नीचे टुकड़ा मैं वर्तमान में उपयोग कर रहा हूँ है ..

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

नोट: FileTransfer.upload() मेरे मामले में काम नहीं करेगा।

ऊपर झलकी मैं #SO

से मौजूदा क्यू के माध्यम से जा & एक के बाद Append image file to form data - Cordova/Angular से लेने के बाद का उपयोग कर रहा
+0

मैं जटिल मल्टीपार्ट/फॉर्म-डेटा अनुरोध भेजने में असमर्थ हूं जिसमें Filetransfer.upload() का उपयोग करते समय एकाधिक ब्लॉब्स होते हैं। इसलिए विकल्पों की तलाश में। –

उत्तर

-1

Base64 छवि अपलोड आईओएस/एंड्रॉयड में दोनों काम करेंगे जैसा कि मैंने कोशिश की है: के रूप में iOS के लिए वहाँ केवल है छवि दिखाने का एक तरीका बेस 64 प्रारूप का उपयोग कर रहा है। आप बेस 64 छवि उत्पन्न करने के लिए कॉर्डोवा-कैमरा-प्लगइन का उपयोग कर सकते हैं और HTML के आईएमजी टैग डाल सकते हैं। मैंने कैमरा प्लगइन में जेपीईजी, बेस 64 में डेटा प्राप्त करने के लिए ध्वज सेट किया है।

<img id="cardImg"> 

स्टोर base64 छवि के रूप में जावास्क्रिप्ट चर में:

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

तो बस के रूप में HTML के टैग img को डेटा पास:

cardImg.src=imgdata; 

हो गया!

+1

मैं एक छवि के रूप में प्रदर्शित करने के लिए नहीं देख रहा हूँ। एक बार फिर प्रश्न सावधानी से पढ़ें। –

+0

मैंने छवि को प्रदर्शित करने के लिए बेस 64 विधि के साथ एक उत्तर पोस्ट किया है क्योंकि यह अधिक सामान्य है और एंड्रॉइड और आईओएस दोनों में काम करता है। एंड्रॉइड कुछ समस्या का कारण बनता है: एंड्रॉइड 7.0 (एपीआई लेवल 24) और उच्चतर को लक्षित करने वाले हालिया ऐप्स के लिए, फाइल पास करने के लिए: // यूआरआई पैकेज पैकेज में एक फ़ाइलयूरीएक्सोस्ड अपवाद का कारण बनता है। इसलिए देशी एंड्रॉइड में हमें सामग्री मिलती है: // uri फ़ाइल की बजाय। – taranjeetsapra

संबंधित मुद्दे