微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

 }

原文地址:https://www.jb51.cc/android/311310.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐