How to upload multipart form data and image to server in android?

后端 未结 6 545
醉梦人生
醉梦人生 2020-11-29 04:39

Status code 500 during upload multipart entity image to server in android code

Html form: (can add successfully image to server)

          


        
6条回答
  •  悲&欢浪女
    2020-11-29 05:36

    I know I am late for posting this answer but still if someone wants to upload multiple images to the server in android

    String uploadMultipleFiles(Api api, HashMap> fileListMap)
                throws IOException {
    
            String responseS;
            OkHttpClient timeOut = getOkHttpClient(api.getTimeOut());
    
            MultipartBody.Builder multipartBuilder = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM);
            int j = 0;
            ArrayList fileList;
            for (Map.Entry> entry : fileListMap.entrySet()) {
                String key = entry.getKey();
                fileList = entry.getValue();
    
                multipartBuilder.addFormDataPart("data[" + j + "].name", key);
    
                if (fileList != null) {
                    for (int i = 0; i < fileList.size(); i++) {
    
                        File fileListRequest = fileList.get(i);
    
                        if (fileListRequest.exists()) {
                            String ext = CommonUtils.getExtension(fileListRequest.getName());
                            /* Changing Media Type whether JPEG or PNG **/
                            final MediaType MEDIA_TYPE = ext.endsWith("png") ? MEDIA_TYPE_PNG :
                                    ext.endsWith("jpg") ? MEDIA_TYPE_JPG : MEDIA_TYPE_JPEG;
    
                            multipartBuilder.addFormDataPart("data[" + j + "].files[" + i + "]",
                                    fileListRequest.getName(),
                                    RequestBody.create(MEDIA_TYPE, fileListRequest));
    
                        }
                    }
                }
                j++;
            }
            RequestBody requestBody = multipartBuilder.build();
            Request.Builder requestBuilder = new Request.Builder()
                    .url(Objects.requireNonNull(api.getUrl()))
                    .post(requestBody);
            buildHeaders(requestBuilder);
            Response response = timeOut.newCall(requestBuilder.build()).execute();
            responseS = response.body().string();
            Log.i(api.getName().name(), responseS);
            return responseS;
        } 
    

    Above code is for uploading multiple images to the server and for a single image you need to add only a single line below

    multipartBuilder.addFormDataPart("fileName",fileListRequest.getName(),RequestBody create(MEDIA_TYPE,fileListRequest));
    

提交回复
热议问题