7

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

5 回答 5

4

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

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

于 2016-02-17T18:57:27.807 回答
1

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

于 2012-08-14T09:35:35.250 回答
1
 File[] files = lst.toArray(new File[lst.size()]);

    try {
        params.put("media[]", files);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
于 2017-08-28T08:19:42.033 回答
0

您应该将所有文件作为参数传递给 params。例如:

params.put("file_one", myFiles1);
params.put("file_two", myFiles2)
于 2016-04-11T12:09:36.237 回答
-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();
    }
}
于 2014-04-21T11:13:28.740 回答