2012-08-14 16 views
5

Tôi biết tôi có thể tải lên tập tin duy nhất từ ​​AsyncHttpClientLàm thế nào để tải nhiều dữ liệu với AsyncHttpClient Android

http://loopj.com/android-async-http/

File myFile = new File("/path/to/file.png"); 
RequestParams params = new RequestParams(); 
try { 
    params.put("profile_picture", myFile); 
} catch(FileNotFoundException e) {} 

Nhưng tôi phải upload nhiều file đến máy chủ với bài nhiều phần dữ liệu. Tôi có thể làm như thế nào?

Trả lời

1

Tạo đối tượng SimpleMultipartEntity và gọi addPart cho mỗi tệp mà bạn muốn tải lên.

+0

Nó không làm việc .. nó chỉ sáp nhập các tập tin thứ hai để là người đầu tiên .. –

+1

Tôi muốn thêm hai tập tin cho phím cùng .. có thể đó là lý do phương pháp này được sáp nhập chúng –

+0

có bạn có thể khắc phục điều đó không? xin vui lòng chia sẻ –

-1

Bạn nên sử dụng mã này:

public static void fileUpLoad(String url,File file,AsyncHttpResponseHandler asyncHttpResponseHandler){ 
    RequestParams requestParams=new RequestParams(); 

    try{ 
     requestParams.put("profile_picture", file,"application/octet-stream"); 
     client.post(url, requestParams, new AsyncHttpResponseHandler()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Yêu cầu là Tải lên nhiều phần. –

3

Bạn có thể vượt qua một mảng tập tin như giá trị cho khóa tập tin. Để làm điều đó, hãy làm theo các mã bên dưới:

File[] myFiles = { new File("pic.jpg"), new File("pic1.jpg") }; 
RequestParams params = new RequestParams(); 
try { 
    params.put("profile_picture[]", myFiles); 
} catch(FileNotFoundException e) { 

} 

Aditionally, nếu bạn muốn có một mảng động, bạn có thể sử dụng một ArrayList và chuyển đổi File [] loại với phương pháp .toArray()

ArrayList<File> fileArrayList = new ArrayList<>(); 

//...add File objects to fileArrayList 

File[] files = new File[fileArrayList.size()]; 
fileArrayList.toArray(files); 

Hy vọng trợ giúp này. = D

+0

Tôi gặp vấn đề ở đây: Tôi làm chính xác như trên, nhưng sau đó onSuccess CallBack không được gọi. Khi tôi tải lên bảy tệp [hình ảnh] hoặc như vậy, tôi chỉ nhận được một hình ảnh là toàn bộ và phần còn lại của chúng trống. Tuy nhiên, điều này hoạt động với 4 tệp nhưng, cuộc gọi trở lại để thành công không bao giờ được nhận. –

0

Bạn nên chuyển tất cả các tệp của mình dưới dạng tham số trên thông số. Ví dụ:

params.put("file_one", myFiles1); 
params.put("file_two", myFiles2) 
0

Tệp [] files = lst.toArray (tệp mới [lst.size()]);

try { 
     params.put("media[]", files); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
Các vấn đề liên quan