Android多部分上传

前端之家收集整理的这篇文章主要介绍了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相关文章