我自己回答了這個問題,因爲我花了很長時間才找到解決方案,而且沒有很好的記錄。Phonegap文件傳輸的圖片在其他圖片上失敗:錯誤代碼3與FileTransfer上傳
8
A
回答
21
雖然試圖用FileTransfer()對機器人從一個phonegap應用上傳圖像傳輸到遠程服務器我一直得到一個錯誤代碼3上每隔一個文件上傳。
它工作過一次,但立即當我再次嘗試它會拋出一個錯誤,甚至沒有發送文件到服務器。
我使用的文件上傳的代碼是:
的關鍵在於使其工作是增加一個頭選項。
options.headers = {
Connection: "close"
}
options.chunkedMode = false;
的完整代碼:
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
options.chunkedMode = false;
*options.headers = {
Connection: "close"
};*
// setup parameters
var params = {};
params.fullpath =imageURI;
params.name = options.fileName;
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI(url+'/account/profile-pics'), win, fail, options);
function win(r) {
//file uploaded successfully
}
function fail(error) {
alert("An error has occurred: Code = " + error.code);
alert("upload error source " + error.source);
alert("upload error target " + error.target);
}
0
錯誤代碼3是一個相當寬的誤差;它基本上意味着您的服務器編碼不正確或者您沒有互聯網連接,並且導致連接錯誤。
可能意味着:
- 您沒有安裝在服務器上的多插件。在PHP中設置「file_uploads = On」(在PHP.ini中),在ExpressJS中,您需要Multer中間件插件(https://www.npmjs.com/package/multer)等。
- 文件上傳大於您的服務器允許的數量 - 導致狀態錯誤代碼413,其中「請求實體太大」的消息。爲了解決這個問題,你需要調整php.ini中的
upload_max_filesize
設置,爲了解決這個問題,你需要調整Multer等的limit
字段。基本上,增加服務器上的文件上傳大小。大多數服務器將文件上傳大小限制爲安全措施。 (https://www.owasp.org/index.php/Unrestricted_File_Upload) options.fileKey
值(即<input type="file" name="fileKey" />
)不是您的服務器期望的名稱 - 示例錯誤消息可能是「意外字段」。- 表頭中的
content-type
字段沒有值multipart/form-data; boundary=----WebKitFormBoundary
。記錄服務器上的請求標頭,可用於檢查內容類型是否設置正確。
上傳照片與文件傳輸
@AugieGardner - 也一致認爲,科爾多瓦文件傳輸的插件是不是有據可查上傳用相機插件拍攝的照片。
幸運的是,我有iOS的工作示例(和我的猜測是Android的爲好):
cordova file transfer plugin not working in ios simulator
上傳照片沒有文件傳輸
一個簡單的替代(或回退),將將圖像編碼爲Base64,並通過簡單的舊AJAX POST請求發送它。其中包括以下優點和缺點。Base64編碼的
缺點編碼發送的AJAX圖片
- 您可能需要增加服務器上的請求限制大小,這樣你就不會得到413個錯誤(即「請求實體太大」) 。
- Base64圖像比二進制圖像大大約37%,這很可能會導致上傳速度變慢。
- 可能不適用於視頻或其他文件類型。 Base64編碼的
優勢編碼發送過來AJAX
- 小應用程序的大小(和更快的應用程序下載)的圖像,因爲科爾多瓦的文件傳輸插件,並可能科爾多瓦的文件插件不會給應用程序添加開銷。
- 當您將應用擴展到新的操作系統(即iOS,Android等)時,您無需修復文件傳輸插件錯誤。
- 您可能不需要服務器上的多部分服務(或中間件)來上傳圖像。
相關問題
- 1. Phonegap在iOS上的FileTransfer上嘗試上傳圖片時出現錯誤代碼3
- 2. MVC 3 - 圖片上傳失敗
- 3. 圖片上傳不失敗
- 4. 上傳圖片失敗
- 5. php上傳圖片失敗上傳
- 6. 的PhoneGap 2.5.0在IOS文件傳輸上傳圖片,返回405碼3
- 7. PHP圖片上傳中間失敗。上傳了一半圖片
- 8. PhoneGap文件上傳(其他圖像)使用文件傳輸
- 9. 代碼圖片上傳
- 10. 錯誤的圖片上傳
- 11. PhoneGap的文件傳輸上傳圖片到服務器
- 12. Cordova FileTransfer:將圖片上傳至AWS s3
- 13. iPhone上的PhoneGap文件傳輸錯誤(代碼:3,http_status:404)
- 14. SWF上傳圖片上傳在部分文件上傳失敗PHP
- 15. 在PHP中上傳圖片失敗
- 16. 的Android - HttpClient的上傳圖片失敗
- 17. CKFinder圖片上傳錯誤
- 18. 圖片上傳錯誤
- 19. AFNetworking上傳圖片錯誤
- 20. 圖片上傳錯誤
- 21. 圖片上傳錯誤
- 22. PHP圖片上傳錯誤
- 23. ObjectiveFlickr圖片上傳錯誤
- 24. 圖片上傳錯誤
- 25. PHP:圖片上傳錯誤
- 26. 上傳圖片失敗的PHP後端
- 27. MVC 3圖片上傳圖片
- 28. 亞馬遜s3圖片上傳失敗
- 29. 闊葉圖片上傳失敗
- 30. cordova android圖片上傳失敗
這是非常令人沮喪的是,這不是由phonegap更好地記錄。您的解決方案爲我工作,謝謝。 –
我得到這個錯誤(錯誤代碼3),因爲Apache服務器上的php模塊上配置的文件大小比我作爲請求的一部分發布的小。一旦我增加了限制,它是固定的我。 –
當互聯網斷開連接時,還會出現錯誤代碼3。 –