7

I know I can upload single file from AsyncHttpClient

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) {}

But I have to upload multiple files to the server with multipart post. How can I do that?

morten.c
  • 3,414
  • 5
  • 40
  • 45
Yogesh Maheshwari
  • 1,324
  • 2
  • 16
  • 37

5 Answers5

4

You can pass a file array as value for the files key. In order to do that, follow the code below:

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

}

Aditionally, if you want a dynamic array, you can use an ArrayList and convert to File[] type with the method .toArray()

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

//...add File objects to fileArrayList

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

Hope this help. =D

Maurício Fonseca
  • 1,006
  • 1
  • 9
  • 9
  • I have a problem here: I do exactly as above, but then onSuccess CallBack does not get called. When I upload seven files [images] or so, I get only one image as whole and rest of them are blank. This works however with 4 files but, the call back for success never gets received. – Abhinav Saxena May 04 '16 at 04:43
1

Create the SimpleMultipartEntity object and call the addPart for each file that you want to upload.

0x8BADF00D
  • 7,138
  • 2
  • 41
  • 34
Rafael Sanches
  • 1,823
  • 21
  • 28
1
 File[] files = lst.toArray(new File[lst.size()]);

    try {
        params.put("media[]", files);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
Jitesh Prajapati
  • 2,533
  • 4
  • 29
  • 51
Devraj Jha
  • 11
  • 1
0

You should pass all your files as parameter on params. For example:

params.put("file_one", myFiles1);
params.put("file_two", myFiles2)
Mikhail
  • 1,061
  • 2
  • 13
  • 30
mcamocci
  • 56
  • 1
  • 4
-1

You should use this code:

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();
    }
}
Rahil Wazir
  • 10,007
  • 11
  • 42
  • 64
xurong
  • 1