2013-07-17 16 views
5

<input type="file" accept="image/*"/> etiketini kullanarak fotoğrafları bir mobil aygıttan karşıya yüklemek için bir web sayfasında çalışıyorum. Bu iphone üzerinde güzel çalışır ve android üzerinde krom, ama nerede sorunları yaşıyoruz stok android tarayıcı ile.Stok ile sorun Tarayıcıdan fotoğraf seçen tarayıcı

Sorun, galerinizden bir dosya seçtiğinizde ortaya çıkar (fotoğraf çekmek için fotoğraf makinesini kullandığınızda iyi çalışır). Ayrıca stok tarayıcısındaki galeriden alındığında veri MIME türünün mevcut olmadığını görmemiz için daha da daraltdık (aşağıdaki fotoğraflar yüklenmekte olan veri URL'sinin ilk 100 karakterini göstermektedir. Amaç JPEG'yi zorlamaktı. ancak MIME türü olmadan bunu nasıl düzeltebileceğimizi bilemeyiz .. Görüntülerin nasıl işlendiğini görmek için aşağıdaki kodlara bakın:

Görüntü nasıl yazılmadan nasıl yazılır? stok android tarayıcı üzerinde mevcut değildir?

DÜZENLEME Öncelikle

, bu aynı görüntü değildir, onlar yakın alınmıştır Aynı zaman, ve bu sorun değil, bu yüzden veri farklıdır (MIME türü stok tarayıcıda herhangi bir görüntüde görünmüyor, bu yüzden sorun değil.

Güncelleme

Ben MIME türü bu krom üzerinde stok tarayıcıya resim/jpeg ekleyerek sorunu olduğunu doğruladı. Maalesef, jpeg olacak garanti yolu yoktur, bu yüzden tekrar gerçekten bu şekilde yapamaz

_readInputFile: function (file, index) { 
      var w = this, o = this.options; 
      try { 

       var fileReader = new FileReader(); 

       fileReader.onerror = function (event) { 
        alert(w._translate("There was a problem opening the selected file. For mobile devices, some files created by third-party applications (those that did not ship with the device) may not be standard and cannot be used.")) 
        $('#loadingDots').remove(); 
        return false; 
       } 
       fileReader.onload = function (event) { 

       var data = event.target.result; 
       //alert(data.substring(0,100)); 
       //var mimeType = data.split(":")[1].split(";")[0]; 


       alert("Load Image"); //I get to this point 
       $('#' + w.disp.idPrefix + 'hiddenImages').append($('<img />', { 
        src: data, 
        id: "dummyImg" + index, 
        load: function(){ 
        var width = dummy.width(); 
        var height = dummy.height(); 
        $('#dummyImg' + index).remove(); 
        alert("Render"); // I don't get here 
         var resized = w._resizeAndRenderImage(data, null, null, biOSBugFixRequired, skewRatio, width, height); 
         alert("Image Rendered"); // I don't get here 

        } 
       })); 
      } 
      fileReader.readAsDataURL(file); 
     } 
     catch (e) { 
     } 
} 

Krom
Chrome

Stok Tarayıcı
Stock Browser

+1

"append" işlevine iletilen nesnenin 'id 've' load' özellikleri arasında bir virgül özlüyor musunuz? Ayrıca, uyarıdan ("Render") sonra bir noktalı virgül eksik. – lxgreen

+0

Aslında bir virgül var, SO için kodumu temizlerken yanlışlıkla kaldırdım. Uyarı ("Render") gerçekten bir noktalı virgül eksik, ancak bu benim hata ayıklama amaçları için oradaydı ve ben hala ben sorunları hala vardı –

+0

sorunları vardı .. her durumda, bu jsfiddle deneyin: http: // jsfiddle .net/MGB3y/11 /. Bu, kodunuza göre basitleştirilmiş örneklemdir. benim HTC tarayıcımda çalışır (android 4.0.3). Bu yardımcı olur mu? – lxgreen

cevap

4

Sorun tarayıcıyla ilgili olduğundan ve tarayıcıyı gerçekten düzeltemediğinizden (bir hatayı Google'a bildirebilirsiniz), farklı bir yol almanızı öneririm. In Node.js, given a URL, how do I check whether its a jpg/png/gif?

dosya akışı kullanarak dosya türünü kontrol etmek için bir yöntem önerir kabul edilen yanıt ait yorumlarına bakın:

İşte bakın. Eminim bu tarayıcı tarafından uygulanan Javascript üzerinde çalışacak ve sadece Node.js.

+0

ile bir sorun var, teşekkürler bu şekilde ...Şimdi tatile çıkıyorum, bu yüzden maalesef bunu test edemiyorum –

İlgili konular