2012-08-02 22 views
8

Tôi đang làm việc để tải ảnh lên máy chủ. Tôi có thể tải lên thành công một hình ảnh bằng cách sử dụng iOS nhưng khi tôi thử trên android tôi nhận được mã lỗi 3. Hiện đang sử dụng phonegap cordova 1.8.1.FileTransfer.upload() ném mã lỗi của Phonegap 3 trên Android

Tôi đã cố gắng thêm đúng với thông số

upload(filePath, server, successCallback, errorCallback, options, **true**); 

và thêm

options.chunkedMode = false; 

tập tin AndroidManifest tôi này chứa:

<uses-permission android:name="android.permission.INTERNET" /> 

tập tin cordova.xml My chứa:

<access origin="*"/> 

Tôi có thiếu gì đó không?

Cảm ơn

+1

Tôi có cùng mã lỗi trên iOS, cách bạn giải quyết vấn đề của mình? – ADOConnection

+1

nghĩa Error code: 1 = FileTransferError.FILE_NOT_FOUND_ERR \t \t \t \t \t \t \t \t 2 = FileTransferError.INVALID_URL_ERR \t \t \t \t \t \t \t \t 3 = FileTransferError.CONNECTION_ERR \t \t \t \t \t \t \t \t 4 = FileTransferError .ABORT_ERR \t \t \t \t \t \t \t \t 5 = FileTransferError.NOT_MODIFIED_ERR –

Trả lời

-1

Bạn có thể thử một trong những:

Set android:debuggable="true" trong thẻ <application> file AndroidManifest.xml của bạn.

Set <access origin=".*"/> thay vì chỉ các * như nó được đề nghị trong phần ý kiến ​​như sau:

<!-- <access origin="https://example.com" /> allow any secure requests to example.com --> 
<!-- <access origin="https://example.com" subdomains="true" /> such as above, but including subdomains, such as www --> 
<!-- <access origin=".*"/> Allow all domains, suggested development use only --> 
+0

. * Không làm việc với PhoneGap build – ADOConnection

2

này xảy ra với tôi quá. Bạn nên xác định chunkedMode=false (http://stackoverflow.com/questions/8522729/phonegap-filetransfer-upload-fails-on-android)

var options = FileUploadOptions(); 
options.chunkedMode = false; 
+0

Xin lỗi, vô hiệu hóa chế độ chunked không giúp đỡ. – ottel142

0

Đây là một lỗi chưa được định hình trong thư viện PhoneGap, vì không có sửa lỗi, tôi đã phải làm cho nó hoạt động bằng cách làm việc của tôi xung quanh (về cơ bản reupload trên mỗi thất bại thay thế): mã

ft.upload(path, 
      encodeURI("http://yourdomain.com/upload.php"), 
      function(result) { 
       alert("Uploaded"); 
      }, 
      function(error) { 
       ft.upload(path, 
       encodeURI("http://yourdomain.com/upload.php"), 
       function(result) { 
        alert("Uploaded");     
       }, 
       function(error) { 
        alert("Error uploading image"); 
       }, 
       { fileName: name, fileKey: "file", mimeType: "image/jpeg", chunkedMode: false }, true);  
      }, 
      { fileName: name, fileKey: "file", mimeType: "image/jpeg", chunkedMode: false }, true); 
+0

Đã không giải quyết được vấn đề của tôi, sắp xếp với điều này trong một tuần nay. Bất cứ một đề nghị nào khác? –

0

Tôi đã hỏi Telerik về vấn đề này mà tôi gặp phải với AppBuilder. Theo phản ứng của họ it might be a bug in Cordova (Tôi đang sử dụng 3.2).

Họ khuyên bạn nên cập nhật lên l atest FileTransfer library (cũng cập nhật tất cả các phụ thuộc) và xem cách đó giải quyết được sự cố của bạn hay không. Tôi thực sự gặp phải một vấn đề khác khi biên soạn các thư viện mới.

Tôi khuyên bạn nên thử điều đó và xem điều đó có phù hợp với bạn hay không.

2

Đây là những bước tôi sử dụng để khắc phục vấn đề này:

gia tăng các tùy chọn sau:

options.chunkedMode = false; 
options.headers = { 
     Connection: "close" 
    }; 

Nhưng quan trọng hơn là một thực tế mà tôi đã sử dụng Genymotion như giả lập để thử nghiệm. Tải hình ảnh lên máy chủ cục bộ không hoạt động vì trình giả lập đang chạy trong máy ảo và máy cục bộ có nghĩa là máy chủ cục bộ của VM chứ không phải máy chủ cục bộ của máy chủ web của bạn.

Vì vậy, thay vì tải lên 'localhost', bạn nên tải lên:

http://10.0.2.2 

và thêm dòng sau vào config.xml của bạn:

<access origin="10.0.2.2" subdomains="true"/> 

Tôi đã thử nghiệm nó và làm việc của nó như một sự quyến rũ. Cho tôi 3 ngày để làm việc này.

+1

Tiêu đề 'Connection:" close "' làm việc cho tôi. CẢM ƠN BẠN! –

0

này cũng có thể là một lý do, và giải quyết nó cho tôi:

iOS 9 và OSX 10.11 yêu cầu TLSv1.2 SSL cho tất cả các host bạn có kế hoạch để yêu cầu dữ liệu từ trừ khi bạn chỉ định lĩnh vực ngoại lệ trong Thông tin ứng dụng của bạn. tập tin plist.

(CFNetwork SSLHandshake failed iOS 9)

6

Sự cố có thể không có trong Phonegap. nếu máy chủ là máy chủ dựa trên Windows, hãy thử sử dụng một máy chủ khác. Ngoài ra, đừng quên thêm các dòng sau:

var options = new FileUploadOptions(); 
options.chunkedMode = false; 
options.headers = { 
     Connection: "close" 
    }; 
+0

Điều này làm việc cho tôi với một webservice PHP trên một máy chủ cửa sổ. Cảm ơn rất nhiều – wezzy

+0

Sau khi thử nhiều thứ, trong vài giờ, điều này đã làm việc cho tôi đối với máy chủ web Ruby (Roda) trên máy tính Windows. Cảm ơn! – globetrotter

+0

Tôi cần 'chunkedMode', nhưng' Connection: "close" 'header làm việc cho tôi. Cảm ơn! –

Các vấn đề liên quan