Android多部分上传

作为我的 Android应用程序的一部分,我想上传位图以进行远程存储.我有简单的HTTP GET和POST通信工作完美,但是关于如何做多部分POST的文档似乎与独角兽一样罕见.

此外,我想直接从内存传输图像,而不是使用文件.在下面的示例代码中,我从一个文件获取一个字节数组,以便稍后使用HttpClient和multipartentity.

File input = new File("climb.jpg");
    byte[] data = new byte[(int)input.length()];
    FileInputStream fis = new FileInputStream(input);
    fis.read(data);

    ByteArrayPartSource baps = new ByteArrayPartSource(input.getName(),data);

这一切似乎对我来说很清楚,除了我不能为我的生活找到在哪里得到这个ByteArrayPartSource.我已经链接到httpclient和httpmime JAR文件,但没有骰子.我听说HttpClient 3.x和4.x之间的包结构发生了很大变化.

有人在Android中使用这个ByteArrayPartSource,他们是如何导入的?

在文档挖掘和冲刷互联网后,我想出了符合我需求的东西.要制作一个多部分请求,如表单POST,以下代码为我做了一个窍门:

File input = new File("climb.jpg");

    DefaultHttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://localhost:3000/routes");
    multipartentity multi = new multipartentity(HttpMultipartMode.broWSER_COMPATIBLE);
    String line;

    multi.addPart("name",new StringBody("test"));
    multi.addPart("grade",new StringBody("test"));
    multi.addPart("quality",new StringBody("test"));
    multi.addPart("latitude",new StringBody("40.74"));
    multi.addPart("longitude",new StringBody("40.74"));
    multi.addPart("photo",new FileBody(input));
    post.setEntity(multi);

    HttpResponse resp = client.execute(post);

HTTPMultipartMode.broWSER_COMPATIBLE位非常重要.感谢Radomir’s blog在这一个.

解决方法

尝试这个:
HttpClient httpClient = new DefaultHttpClient() ;

 HttpPost httpPost = new HttpPost("http://example.com");
 multipartentity entity = new multipartentity();     
 entity.addPart("file",new FileBody(file));
 httpPost.setEntity(entity );
 HttpResponse response = null;

 try {
     response = httpClient.execute(httpPost);
 } catch (ClientProtocolException e) {
     Log.e("ClientProtocolException : "+e,e.getMessage());         
 } catch (IOException e) {
     Log.e("IOException : "+e,e.getMessage());

 }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...