2012-09-28 20 views
7

Android için bir cordova 2.0 uygulaması var. Bazı Verileri sunucuma yüklemek için FileTransfer Eklentisini kullanıyorum. İlk kez, yükleme gerçekleştirilir, her şey iyi çalışır. Ama sonra bir EPIPE (Broken Pipe) hatası alıyorum. Sadece yükleme düğmesine tekrar bassam, işe yarıyor.EPIPE (Broken Pipe) Cordova 2.0 ile FileTransfer eklentisini kullanırken hata

Hatayı nasıl önleyebilirim? Ben de rastgele aralıklı HTTP durum hataları boğuşup ettik ve durumu yeniden denemek saklamak için bir var kullanarak geçici bir çözüm istihdam var

09-28 17:31:12.304: W/FileTransfer(29497): Error getting HTTP status code from connection. 
09-28 17:31:12.304: W/FileTransfer(29497): java.net.SocketException: sendto failed: EPIPE (Broken pipe) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.io.IoBridge.sendto(IoBridge.java:475) 
09-28 17:31:12.304: W/FileTransfer(29497): at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507) 
09-28 17:31:12.304: W/FileTransfer(29497): at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46) 
09-28 17:31:12.304: W/FileTransfer(29497): at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.net.http.ChunkedOutputStream.writeHex(ChunkedOutputStream.java:102) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.net.http.ChunkedOutputStream.writeBufferedChunkToSocket(ChunkedOutputStream.java:128) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.net.http.ChunkedOutputStream.close(ChunkedOutputStream.java:118) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:804) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486) 
09-28 17:31:12.304: W/FileTransfer(29497): at org.apache.cordova.FileTransfer.createFileTransferError(FileTransfer.java:384) 
09-28 17:31:12.304: W/FileTransfer(29497): at org.apache.cordova.FileTransfer.upload(FileTransfer.java:316) 
09-28 17:31:12.304: W/FileTransfer(29497): at org.apache.cordova.FileTransfer.execute(FileTransfer.java:85) 
09-28 17:31:12.304: W/FileTransfer(29497): at org.apache.cordova.api.PluginManager$1.run(PluginManager.java:192) 
09-28 17:31:12.304: W/FileTransfer(29497): at java.lang.Thread.run(Thread.java:856) 
09-28 17:31:12.304: W/FileTransfer(29497): Caused by: libcore.io.ErrnoException: sendto failed: EPIPE (Broken pipe) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.io.Posix.sendtoBytes(Native Method) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.io.Posix.sendto(Posix.java:146) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177) 
09-28 17:31:12.304: W/FileTransfer(29497): at libcore.io.IoBridge.sendto(IoBridge.java:473) 
09-28 17:31:12.304: W/FileTransfer(29497): ... 14 more 
09-28 17:31:12.319: E/FileTransfer(29497): {"target":"http:\/\/10.100.150.173:8081\/mobile110\/upload","source":"content:\/\/media\/external\/images\/media\/30","code":3} 
09-28 17:31:12.319: E/FileTransfer(29497): java.net.SocketException: sendto failed: EPIPE (Broken pipe) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.io.IoBridge.sendto(IoBridge.java:475) 
09-28 17:31:12.319: E/FileTransfer(29497): at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507) 
09-28 17:31:12.319: E/FileTransfer(29497): at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46) 
09-28 17:31:12.319: E/FileTransfer(29497): at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.net.http.ChunkedOutputStream.writeHex(ChunkedOutputStream.java:102) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.net.http.ChunkedOutputStream.writeBufferedChunkToSocket(ChunkedOutputStream.java:128) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.net.http.ChunkedOutputStream.write(ChunkedOutputStream.java:77) 
09-28 17:31:12.319: E/FileTransfer(29497): at java.io.DataOutputStream.write(DataOutputStream.java:98) 
09-28 17:31:12.319: E/FileTransfer(29497): at org.apache.cordova.FileTransfer.upload(FileTransfer.java:261) 
09-28 17:31:12.319: E/FileTransfer(29497): at org.apache.cordova.FileTransfer.execute(FileTransfer.java:85) 
09-28 17:31:12.319: E/FileTransfer(29497): at org.apache.cordova.api.PluginManager$1.run(PluginManager.java:192) 
09-28 17:31:12.319: E/FileTransfer(29497): at java.lang.Thread.run(Thread.java:856) 
09-28 17:31:12.319: E/FileTransfer(29497): Caused by: libcore.io.ErrnoException: sendto failed: EPIPE (Broken pipe) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.io.Posix.sendtoBytes(Native Method) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.io.Posix.sendto(Posix.java:146) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177) 
09-28 17:31:12.319: E/FileTransfer(29497): at libcore.io.IoBridge.sendto(IoBridge.java:473) 
09-28 17:31:12.319: E/FileTransfer(29497): ... 11 more 
+0

Eğer bir çözüm buldunuz Bu henüz? – varevarao

+0

Gerçekten, dosyayı tekrar gönderdim. –

+0

Ah darn. Bu sorun gerçek bir bummer, neredeyse hiç bir yardım ve nedenini anlamak için neredeyse hiç bir şey. – varevarao

cevap

7

. aktarım geri arama denir başarısız ve (1'den fazla yeniden deneme gerekli olmamasına rağmen) 3 kez yükleme fonksiyonunu yeniden denemek eğer Sonra Bu VAR artırır:

var imageRetry = 0; // if upload errors, retry 3 times 
... 
// file transfer fail callback 
function fail(error) { 
    if(imageRetry < 3){ 
     imageRetry++; 
     uploadPhoto(); // call upload function again 
    }else{ 
     // normal failure handling 
    } 
} 

Notlar: Sunucu listelenen beyazdır ve ben ettik chunkedMode'u da başarılı bir şekilde devre dışı bırakmayı denedi. Ayrıca normal veya kendinden imzalı SSL kullanmıyorum. Benim durumumda, kullanıcı yüklemeden önce bir fotoğrafı filtreleyebilir. Hiçbir filtre uygulanmazsa, yükleme her zaman başarılı olur. kullanıcı çalışır herhangi bir filtre uygulamadan ise rastgele yüklemek hata kodu 3.

ile başarısız (Ve evet, bu çözüm tamamen ideal değildir biliyorum, ama bir unrecovered yetmezliği daha iyidir.)

+0

Bu şekilde yaptım, ama gerçekten bu işten hoşlanmıyorum. –

+0

seçenek yok gibi görünüyor, aynı yöntemi dağıtmak zorundayım – DdD

+0

Bu 3.4.0 düzeltilmiş olabilir: https://issues.apache.org/jira/browse/CB-2293 – user276648

İlgili konular