dongzhuan1185 2014-04-16 14:12
浏览 68
已采纳

从Android应用上传多个图像到服务器

I need to upload multiple images to PHP server from Android application. Multiple means that user can upload just 1 picture, or 2, or 3 or even 5 images.

Images I need to send to server with parameter path[numberOfImage], like this:

reqEntity.addPart("path[0]", bab);

With this code I can upload an image to server.

    File file1 = new File(selectedPath1);
    Bitmap bitmap = decodeFile(file1);      
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.JPEG, 75, bos);
    byte[] data = bos.toByteArray();         

    try
    {
         HttpClient client = new DefaultHttpClient();
         HttpPost post = new HttpPost(urlString);

         ByteArrayBody bab = new ByteArrayBody(data, "test.jpg");

         MultipartEntity reqEntity = new MultipartEntity();

         reqEntity.addPart("path[0]", bab);

         post.setEntity(reqEntity);
         HttpResponse response = client.execute(post);
         resEntity = response.getEntity();
         response_str = EntityUtils.toString(resEntity);
     }
  • 写回答

1条回答 默认 最新

  • dongnai6973 2014-04-16 14:44
    关注

    You can simply put it in a loop. Assuming you have an array of files (in this example called myFiles), you would just do something like this. Bear in mind that it's important of each iteration to create a new object of everything, so this way you're making sure you're sending always a different and independent object.

    int i = 0;
    
    String[] myFiles = { "C:\path1.jpg", "C:\path2.jpg" };
    
    for (String selectedPath : myFiles) {
      File file = new File(selectedPath);
      Bitmap bitmap = decodeFile(file);
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      bitmap.compress(CompressFormat.JPEG, 75, bos);
      byte[] data = bos.toByteArray();         
    
      try {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(urlString);
    
        ByteArrayBody bab = new ByteArrayBody(data, "test.jpg");
    
        MultipartEntity reqEntity = new MultipartEntity();
    
        reqEntity.addPart("path[" + String.valueOf(i++) + "]", bab);
    
        post.setEntity(reqEntity);
        HttpResponse response = client.execute(post);
        resEntity = response.getEntity();
        response_str = EntityUtils.toString(resEntity);
      }
      catch (...) { ... }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题
  • ¥15 有没有人能解决下这个问题吗,本人不会编程
  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥20 能提供一下思路或者代码吗