【问题标题】:Upload Image to server in android by Httppost通过Httppost将图像上传到android中的服务器
【发布时间】:2015-06-04 04:41:39
【问题描述】:

如何通过相册或相机上传图片到服务器?

我尝试this link 的代码,但它显示这样的错误

错误:(329, 24) 错误: 无法访问 AbstractBody 找不到 org.apache.james.mime4j.message.AbstractBody 的类文件

【问题讨论】:

标签: android http-post


【解决方案1】:

您可以使用 http post multi-part 将图像上传到服务器。这是可以帮助您的链接。

https://vikaskanani.wordpress.com/2011/01/11/android-upload-image-or-file-using-http-post-multi-part/

http://www.codejava.net/java-se/networking/upload-files-by-sending-multipart-request-programmatically

还有一种上传图片的方法是将其转换为 Base64,然后再上传。检查以下链接。

Android upload image to server using base64

【讨论】:

  • 谢谢你,但它仍然显示这个错误@Vid
  • 错误:(591, 22) 错误:无法访问 org.apache.james.mime4j.message.AbstractBody 的 AbstractBody 类文件 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。注意:某些输入文件使用或覆盖已弃用的 API。注意:使用 -Xlint:unchecked 重新编译以获取详细信息。这个错误我主要面临@Vid
【解决方案2】:

如果你使用 async-http 作为你的 http 客户端 click-here 那么你可以使用下面的方法[如果你选择 async-http 你可以使用这个方法] 此方法不仅可以上传图片,还可以用于对服务器进行正常的 post 调用。

YourFragment.class[这个类是你调用http请求的]

 public class YourFragment extends CommanAbstract 
    {


    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            // TODO Auto-generated method stub

            View v = inflater.inflate(R.layout.your_layout, container, false);
            ButterKnife.inject(this, v);

            return v;
        }


    private void linkCall() {
            // TODO Auto-generated method stub

            RequestParams params = new RequestParams();
            params.put("params1", "value1");
            params.put("params2", "value2");
//note that "image" tag will be the tag which accepts the file to the server
            params.put("image", new File("your image path from gallery or camera"));
            parse(params, 1, your link here, true);

        }
    @Override
        public void parseresult(String response, boolean success, int value) {
            // TODO Auto-generated method stub

            switch (value) {
            case 1:
                //here you can parse the link response
                break;
            }
        }

    @Override
        public void error(String response) {
            // TODO Auto-generated method stub
            //error will come here
        }

    }

CommanAbstract 类[在您有 http 请求的任何类中扩展此类]

public abstract class CommanAbstract extends Fragment{

private static final String Url = "your link head here";

    public abstract void parseresult(String response, boolean success, int value);

    public abstract void error(String response);

    public void parse(RequestParams params, final int value, String link,
            boolean progrss) {
        // TODO Auto-generated method 

        AsyncHttpClient client = new AsyncHttpClient();
        GlobalFunctions.postApiCall(getActivity(), link, params, client,
                new HttpResponseHandler() {

                    @Override
                    public void handle(String response, boolean success) {
                        // TODO Auto-generated method stub

                        if (success) {
                            parseresult(response, true, value);
                        } else {
                            error(response);
                            toast("Connection error");
                        }
                    }
                });
    }
}

GlobalFunctions类[该类调用http请求]

public class GlobalFunctions {
    // static ProgressDialog progress;

    public interface HttpResponseHandler {
        void handle(String response,boolean failre);
    }


    public static void postApiCall(final Context context, final String url,
            RequestParams params, AsyncHttpClient httpClient,
            final HttpResponseHandler handler) {

        httpClient.post(url, params, new AsyncHttpResponseHandler() {
            @Override
            public void onFailure(Throwable arg0, String failureResponse) {
                // TODO Auto-generated method stub

                super.onFailure(arg0, failureResponse);
                System.out.println("fail" + failureResponse + "url is" + url);
                handler.handle(failureResponse,false);

                // errorToast(context);
            }

            @Override
            public void onSuccess(String response) {



                handler.handle(response,true);

            }
        });
    }

}

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2012-09-28
    • 2016-01-25
    • 1970-01-01
    • 2013-12-17
    • 2014-03-21
    相关资源
    最近更新 更多