【问题标题】:How can i multiple picture send with android我如何用android发送多张图片
【发布时间】:2014-02-13 08:28:34
【问题描述】:

你好,当我点击“发送”按钮时,我需要发送所有选定的图片(我在表格图片中拥有所有这些图片[]

在 PHP 中我这样做

<input id="uploadImageAct"  type="file" name="uploadImageAct[]"  data-max-size="2048"  accept="image/x-png, image/gif, image/jpeg" style="visibility: hidden" multiple="multiple">

在 android 中我只为一张图片执行此操作,但我不知道如何为多张图片执行此操作(我将所有图片都放在 table picture[] 中)

此解决方案适用于 FileBody 的一张图片,我需要一个 FileBody 中的多张图片

    public JSONObject post(String url, ArrayList<NameValuePair> nameValuePairs) {
    HttpClient httpClient = new DefaultHttpClient();
    HttpContext localContext = new BasicHttpContext();
    HttpPost httpPost = new HttpPost(url);

    try {
        MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

        for(int index=0; index < nameValuePairs.size(); index++) {
            if(nameValuePairs.get(index).getName().equalsIgnoreCase("uploadFile")) {
                // If the key equals to "image", we use FileBody to transfer the data
                entity.addPart(nameValuePairs.get(index).getName(), new FileBody(new File (nameValuePairs.get(index).getValue())));
            } else {
                // Normal string data
             Charset chars = Charset.forName("UTF-8");
                entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue(),chars));
            }
        }

        httpPost.setEntity(entity);

        HttpResponse response = httpClient.execute(httpPost, localContext);


    HttpEntity httpEntity = response.getEntity();
    is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
} catch (ClientProtocolException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(
            is, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    is.close();
    json = sb.toString();
} catch (Exception e) {
    Log.e("Buffer Error", "Error converting result " + e.toString());
}

// try parse the string to a JSON object
try {
    jObj = new JSONObject(json);
} catch (JSONException e) {
    Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// return JSON String
return jObj;
}

如何更改此功能以便我可以做到这一点

谢谢:)

【问题讨论】:

  • 您想在一个 HTTP 请求中发送所有图像,还是可以在单独的请求中发送每个图像?
  • @mthmulders 是的,一个 HTTP 请求中的所有图像
  • @mthmulders 不,这是在一个输入文件中我需要的多输入文件中:)

标签: java php android json multipartentity


【解决方案1】:

您可以在一个请求中上传多个文件以及 Android 中的其他字符串参数。 为此,您必须在项目构建路径中包含 2 个库,apache-mime4j-0.6.jarhttpmime-4.0.1.jar

private void doFileUpload(){

    File file1 = new File(selectedPath1);
    File file2 = new File(selectedPath2);
    String urlString = "Your server location";
    try
    {
         HttpClient client = new DefaultHttpClient();
         HttpPost post = new HttpPost(urlString);
         FileBody bin1 = new FileBody(file1);
         FileBody bin2 = new FileBody(file2);
         MultipartEntity reqEntity = new MultipartEntity();
         reqEntity.addPart("uploadedfile1", bin1);
         reqEntity.addPart("uploadedfile2", bin2);
         reqEntity.addPart("user", new StringBody("User"));
         post.setEntity(reqEntity);
         HttpResponse response = client.execute(post);
         resEntity = response.getEntity();
         final String response_str = EntityUtils.toString(resEntity);
         if (resEntity != null) {
             Log.i("RESPONSE",response_str);
             runOnUiThread(new Runnable(){
                    public void run() {
                         try {
                            res.setTextColor(Color.GREEN);
                            res.setText("n Response from server : n " + response_str);
                            Toast.makeText(getApplicationContext(),"Upload Complete. Check the server uploads directory.", Toast.LENGTH_LONG).show();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                       }
                });
         }
    }

或者直接访问CoderzHeaven,它可能会对你有所帮助。

【讨论】:

  • 此解决方案适用于 FileBody 的一个图像,我需要一个 FileBody 中的多个图像
  • 但是意思是一样的,你想在一个 FileBody 中有多个图像,因为你必须向服务器发送一个请求,我有解决方案,在多个 FileBody 中有多个图像,但有一个相同的请求......如果你仍然选择你的,那么我建议,ArrayList。获取arraylist中的所有图像,并将其发送到服务器。
猜你喜欢
  • 2023-03-15
  • 2014-01-20
  • 2020-08-18
  • 2020-07-01
  • 1970-01-01
  • 2019-01-19
  • 2015-06-27
  • 2013-03-09
  • 1970-01-01
相关资源
最近更新 更多