Subida múltiple de archivos con OkHttp + Spring

Hace poco OkHttp a OkHttp . Después del interruptor, el código abajo hace la carga.

 RequestBody requestBody = new MultipartBuilder() .type(MultipartBuilder.FORM) .addPart( Headers.of("Content-Disposition", "form-data; name=\"qqfile\""), RequestBody.create( MediaType.parse(filename), new File(filename))) .build(); 

Si compara imágenes, la segunda imagen tiene size = 0 multipartFiles size = 0 . Debe ser de size = 1 . ¿Cómo poblar multipartHttpRequest correctamente usando OkHttp para hacer que el servidor acepte cargar con éxito?

CorrectoIncorrecto

Código del controlador

 import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.springframework.http.MediaType; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.util.WebUtils; @RequestMapping ( method = RequestMethod.POST, value = "/upload", produces = MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8" ) public String upload( HttpServletRequest request, HttpServletResponse response ) throws IOException { boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { MultipartHttpServletRequest multipartHttpRequest = WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class); final List<MultipartFile> files = multipartHttpRequest.getFiles("qqfile"); if (files.isEmpty()) { LOG.error("qqfile name missing in request or no file uploaded"); return some error code here } MultipartFile multipartFile = files.iterator().next(); //process file code below } return failure; } 

Puede obtener un MultipartFile más fácil:

 @RequestMapping(value = "/upload", method = RequestMethod.POST) public String upload(@RequestParam("qqfile") MultipartFile file) throws IOException { if (!file.isEmpty()) { // ... } return "failure"; } 

Y luego, con OkHttp:

 RequestBody body = new MultipartBuilder() .addFormDataPart("qqfile", filename, RequestBody.create(MediaType.parse("media/type"), new File(filename))) .type(MultipartBuilder.FORM) .build(); Request request = new Request.Builder() .url("/path/to/your/upload") .post(body) .build(); OkHttpClient client = new OkHttpClient(); Response response = client.newCall(request).execute(); 

Eso funcionó bien para mí.

Tenga cuidado con MediaType.parse (filename), debe pasar un tipo válido como text / plain, application / json, application / xml …

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.