我在將文件從我的Cordova應用上傳到服務器時遇到了一個非常奇怪的現象。Cordova圖片上傳重複問題
我的應用程序允許用戶使用navigator.camera.getPicture選擇2張圖片(從相冊/相機),然後檢索Camera.DestinationType.FILE_URI,稍後用於通過FileTransfer插件上傳,將文件發送到服務器按順序。
現在,奇怪的問題是,5-10%的時間,由我們的Android應用程序用戶上傳的2張照片最終以BOTH作爲第二張照片。這意味着,在用戶選擇了照片1和2並同時上傳後,服務器端收到的照片都是照片2.
我們已經嘗試詢問用戶儘可能多的信息,我們將其縮小到Android的問題(在iOS上完美運行)。這很可能不是連接問題,因爲無論用戶使用Wifi還是3G,用戶都會遇到此問題,而且我們不確定是否存在內存問題,因爲一些較新的型號也遇到了此問題。
我們嘗試了很多次,但無法用我們的Android設備(包括較慢,較舊的設備)複製此問題。
有沒有人遇到這樣一個奇怪的問題,這是一個相機插件或文件傳輸插件的問題?我懷疑它與內存問題有關,在上傳之前,應用程序以某種方式丟失或混淆了文件URI。
問題只發生一個辦法 - 在兩張照片成了照片2張,但從來都成爲照片1.
請指教,謝謝!
[UPDATE]
我注意到在顯示由Getpicture中傳遞的FILE_URI值的怪異現象。如果我再次爲第二張圖片調用getPicture,插件使用的緩存文件保持不變。它始終是「file:///storage/sdcard0/Android/data/com.myapp/cache/modified.jpg?242432424」(結尾的數字是隨機的,但始終是「modified.jpg」文件名)。
這會導致第二張圖像覆蓋第一張圖像。但是,我還沒有弄清楚大多數時候應用程序是如何成功上傳2張獨立的圖片而不是相同的副本的。
這是一個插件的bug,總是使用相同的文件名作爲緩存的圖像,並可能與某些手機內存問題有關?有什麼辦法可以讓它使用隨機文件名,而不是隻是將隨機參數附加到同一個文件中?
我的Android是4.3.1,運行Cordova 3.6。
下面是我使用的代碼Getpicture中:
navigator.camera.getPicture(function(imageData) { uploadPhoto(imageData) }, onCameraFail, {
destinationType: Camera.DestinationType.FILE_URI, sourceType : Camera.PictureSourceType.PHOTOLIBRARY, allowEdit: false, correctOrientation: true, saveToPhotoAlbum: false, targetWidth: 1280, targetHeight: 960
});
這個問題可能在你的javascript代碼中 - 也許你可以發佈你上傳的地方。 –
我剛剛添加了Javascript代碼,您可以請看一下嗎?謝謝。 – Andy
我剛發現這個奇怪的bug可能與Camera插件的getPicture有關,並且更新它來顯示我的getPicture Javascript。謝謝。 – Andy