使用MultipartEntity的Android帖子图片

时间:2014-03-21 14:45:27

标签: android post progress-bar image-uploading multipartentity

我正在尝试使用POST方法将多个图像与一些其他参数(字符串)一起上传到PHP服务器。我正在使用Multipart方法。我添加了各种解决方案中规定的4个库(apachemime,httpclient,httpmime,httpcore),但我的SDK无法识别MultipartEntity,显示错误:“cannot be resolved to a type”。我也试过了MultipartEntityBuilder,但即使这样也出现了同样的错误。我基本上想要将Bitmap Arraylist上传到服务器&同时显示进度条。

1 个答案:

答案 0 :(得分:1)

您应该发布一些问题代码,以便我们一起来帮助您。

但是如果你想尝试一些简单的东西,可以使用这个库,AsyncHttpClient:http://loopj.com/android-async-http/

使用此库可以发布多个文件:

        private static AsyncHttpClient clientHttp = new AsyncHttpClient();
        ...

        RequestParams params = new RequestParams();
        final String TAG_FILE = "archivo1";
        final String TAG_FILE_1 = "archivo2";
        final String TAG_FILE_2 = "archivo3";
        final String PATH_FILE_1 = ApplicationContext.getInstance().getFilesDir().getPath() + "/" + "file1.jpg";
        final String PATH_FILE_2 = ApplicationContext.getInstance().getFilesDir().getPath() + "/" + "file2.jpg";
        final String PATH_FILE_3 = ApplicationContext.getInstance().getFilesDir().getPath() + "/" + "file3.jpg";

        try {
            params.put(TAG_FILE, PATH_FILE_1);
            params.put(TAG_FILE_1, PATH_FILE_2);
            params.put(TAG_FILE_2, PATH_FILE_3);
            params.put(TAG_PARAM, "SOME TEXT");
        }
        catch(FileNotFoundException e) {
            //Manage your exception
        }

        final int DEFAULT_TIMEOUT = 30 * 1000;
        clientHttp.setTimeout(DEFAULT_TIMEOUT);
        clientHttp.post("http://somereceiver.php", params, new JsonHttpResponseHandler() {

            @Override
            public void onSuccess(JSONObject response) {
                //Do your code on success
            }
            @Override
            public void onStart() {
                                   // Show your progress bar

            }
            @Override
            public void onFinish() {
                                  // Hide your progress bar
                                  super.onFinish();
                if(PATH_FILE_1 != null) {
                    File tem = new File(PATH_FILE_1);
                    if(tem.exists()) tem.delete();
                }
                if(PATH_FILE_2 != null) {
                    File tem = new File(PATH_FILE_2);
                    if(tem.exists()) tem.delete();
                }
                if(PATH_FILE_3 != null) {
                    File tem = new File(PATH_FILE_3);
                    if(tem.exists()) tem.delete();
                }
            }
        });

如果你不需要json,你也可以使用通用响应类型,所以你得到一个字符串。

希望这有帮助。