¿Cómo recibo una carga de archivo en spring mvc usando tanto multipart / form como codificado en trozos?

Estoy tratando de escribir un método mvc spring que pueda recibir una carga de archivos fragmentados de multipart / form o de codificación de transferencia. Puedo escribir un método separado para manejar cada tipo, pero me gustaría hacerlo con el mismo método para poder usar el mismo REST POST uri como:

http://host:8084/attachments/testupload

Aquí está mi mejor intento hasta ahora:

@RequestMapping(value = { "/testupload" }, method = RequestMethod.POST, produces = 
  "application/json")
public @ResponseBody
ResponseEntity<MessageResponseModel> testUpload(
  @RequestParam(value = "filedata", required = false) MultipartFile filedata,
  final HttpServletRequest request) throws IOException {

  InputStream is = null;
  if (filedata == null) {
    is = request.getInputStream();
  }
  else {
    is = filedata.getInputStream();
  }
  byte[] bytes = IOUtils.toByteArray(is);
  System.out.println("read " + bytes.length + " bytes.");

  return new ResponseEntity<MessageResponseModel>(null, null, HttpStatus.OK);
}

Usando el método anterior, puedo cargar un archivo de varias partes, pero si subo un archivo fragmentado, recibo una excepción de Spring que dice:

org.springframework.web.multipart.MultipartException: \
The current request is not a multipart request

Si elimino el parámetro de solicitud MultipartFile, funciona muy bien para la codificación de transferencia fragmentada. Si lo dejo en, funciona muy bien para las subidas de MultipartFile. ¿Cómo puedo hacerlo con el mismo método para manejar ambos tipos de carga?

Esto funciona bien para fragmentado:

@RequestMapping(value = { "/testupload" }, method = RequestMethod.POST, produces = 
  "application/json")
public @ResponseBody
ResponseEntity<MessageResponseModel> testUpload(
  final HttpServletRequest request) throws IOException {

  InputStream is = null;
  is = request.getInputStream();
  byte[] bytes = IOUtils.toByteArray(is);
  System.out.println("read " + bytes.length + " bytes.");

  return new ResponseEntity<MessageResponseModel>(null, null, HttpStatus.OK);
}

y esto funciona muy bien para MultipartFile:

@RequestMapping(value = { "/testupload" }, method = RequestMethod.POST, produces = 
  "application/json")
public @ResponseBody
ResponseEntity<MessageResponseModel> testUpload(
  @RequestParam MultipartFile filedata) throws IOException {

  InputStream is = null;
  is = filedata.getInputStream();
  byte[] bytes = IOUtils.toByteArray(is);
  System.out.println("read " + bytes.length + " bytes.");

  return new ResponseEntity<MessageResponseModel>(null, null, HttpStatus.OK);
}

Debería ser posible, ¿alguien sabe cómo hacer esto?

Gracias Steve

Respuestas a la pregunta(2)

Su respuesta a la pregunta