首页 > 解决方案 > 任何人都可以知道如何在android中将图像数组发布到服务器吗?

问题描述

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

我用谷歌搜索了它,但找不到任何相关数据,所以有人可以告诉我如何实现它吗?

早期答复是可观的。

我的代码是

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

谢谢

标签: androidandroid-volleyretrofitretrofit2okhttp3

解决方案


我正在使用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发布请求

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

推荐阅读