如何使用AsyncHttpClient Android上传多个文件

时间:2012-08-14 08:38:25

标签: android post multipart android-async-http

我知道我可以从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) {}

但是我必须使用多部分帖子将多个文件上传到服务器。 我怎么能这样做?

4 个答案:

答案 0 :(得分:3)

您可以将文件数组作为files键的值传递。 为此,请遵循以下代码:

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

}

另外,如果需要动态数组,可以使用ArrayList 并使用方法.toArray()

转换为File []类型
ArrayList<File> fileArrayList = new ArrayList<>();

//...add File objects to fileArrayList

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

希望这有帮助。 = d

答案 1 :(得分:1)

创建SimpleMultipartEntity对象,并为要上载的每个文件调用addPart。

答案 2 :(得分:1)

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

    try {
        params.put("media[]", files);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

答案 3 :(得分:-1)

您应该使用以下代码:

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();
    }
}