任何人都可以知道如何在android中将图像数组发布到服务器吗?

Posted

技术标签:

【中文标题】任何人都可以知道如何在android中将图像数组发布到服务器吗?【英文标题】:Can Any one knows how to post image array to server in android? 【发布时间】:2019-04-26 16:53:42 【问题描述】:

我陷入了一个查询中,我需要将一个图像数组发送到服务器。

我用谷歌搜索,但找不到任何相关数据,谁能告诉我如何实现它?

早期回复是可观的。

我的代码是

private void imageUpload(final ArrayList imagePath) 

   SimpleMultiPartRequest smr = new SimpleMultiPartRequest( 
            Request.Method.POST, BASE_URL,
           new Response.Listener<String>() 
               @Override
               public void onResponse(String response) 
                   Log.d( "Response", response );
                   try 
                       JSONObject jObj = new JSONObject( response );
                       String message = jObj.getString( "message" );
                       System.out.println( "Done" );

                       Toast.makeText( getApplicationContext(), message, Toast.LENGTH_LONG ).show();

                    catch (JSONException e) 
                       // JSON error
                       e.printStackTrace();
                       Toast.makeText( getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG ).show();
                   
               
           , new Response.ErrorListener() 
       @Override
       public void onErrorResponse(VolleyError error) 

       
   );

    for (int i = 0; i<imagePath.size();i++)
        String ab = imagePath.get( i ).toString();
        System.out.println("Images is find path "+ab);
        smr.addFile(""+i,imagePath.get(i).toString());
    

    MyApplication.getInstance().addToRequestQueue(smr);
  

谢谢

【问题讨论】:

见Posting a multipart request @pskink 我询问如何将数组作为参数发送。请仅就此提出建议 @pskink 亲爱的我只是想将图像数组发送到服务器,以及在上面的代码中,我还将数组作为方法中的参数传递并尝试发布该数组但我仍然找不到实现它的任何解决方案,如果您有任何逻辑,请提出建议。 【参考方案1】:

我正在使用https://github.com/esafirm/android-image-picker这个库来获取图片列表

  @Override
public void onClick(View view) 
    switch (view.getId()) 
        case R.id.upload_btn:
            openImagesList();
            break;
    


public void openImagesList() 
    ImagePicker.create(this) // Activity or Fragment
            .start();



@Override
public void onActivityResult(int requestCode, final int resultCode, Intent data) 
    if (ImagePicker.shouldHandle(requestCode, resultCode, data)) 
        // Get a list of picked images
        List<Image> images = ImagePicker.getImages(data);
        List<File> imgFile = new ArrayList<>();

        for (Image imge : images) 
            imgFile.add(new File(imge.getPath()));
        

        for (File f : imgFile) 
            if (f.exists()) 
                Log.i(TAG, "exist");
            
        

        uploadToSever(imgFile);
    
    super.onActivityResult(requestCode, resultCode, data);

使用https://github.com/amitshekhariitbhu/Fast-Android-Networking POST 请求

   public void uploadToSever(List<File> imgList) 
    AndroidNetworking.upload("your sever url")
            .addMultipartFileList("image[]", imgList)
            .addMultipartParameter("key", "value")
            .setPriority(Priority.HIGH)
            .build()
            .setUploadProgressListener(new UploadProgressListener() 
                @Override
                public void onProgress(long bytesUploaded, long totalBytes) 
                    // do anything with progress
                
            )
            .getAsJSONObject(new JSONObjectRequestListener() 
                @Override
                public void onResponse(JSONObject response) 
                    // do anything with response
                

                @Override
                public void onError(ANError error) 
                    // handle error
                
            );

【讨论】:

感谢 Madu_dev 的快速回复。我应用了你的逻辑,但它抛出了 com.androidnetworking.error.ANError 。 你删除了这个 .addMultipartParameter("key", "value") 部分,如果你只有你可以在这里传递的值。如果不只是删除这一行 是的,我删除了它,我只传递 Image 并抛出 -> com.androidnetworking.error.ANError .addMultipartFileList("image[]", imgList) 你知道image[]这个参数吗?您需要为此提供 url 查询参数。 是的,我知道,我在服务器上传递了相同的参数定义

以上是关于任何人都可以知道如何在android中将图像数组发布到服务器吗?的主要内容,如果未能解决你的问题,请参考以下文章

在android中将图像转换为二进制图像

如何在 Android Studio 中将 ListView 更改为 RecyclerView?

如何在 Android Studio 中将文本设置为对应的图像

如何在 MATLAB 中将多个图像读入一个数组?

在 C# 中将 Base64 字节数组解码为图像

如何从 Android 相机图像中去除 EXIF 数据