Así que tengo una API de Java y utilizo comandos curl para enviar peticiones GET / POST a mi API. Estoy usando Springboot en mi API de Java. Mis comando curl es similar al siguiente:
curl -X POST \
https://localhost:8443/abc/code/v \
-H 'Content-Type: multipart/form-data' \
-F file=@/path/to/file.txt
y mi método Java Springboot que recibe esta solicitud es el siguiente:
@RequestMapping(method = RequestMethod.POST, value = "/{code}/{v}")
public ResponseEntity<Object> uploadTemplate( //
@ApiParam(value = "code desc") //
@PathVariable final String code, //
@ApiParam(value = "v desc") //
@PathVariable final String v, //
@RequestParam("file") MultipartFile file
) throws IOException {
//log.info("received [url: /tabc/" + code + "/" + v + ", method: POST");
System.out.println("file: "+ file.getName());
}
que imprime "file: file"
No se ve como file.txt
está cargado en el servidor en absoluto! ¿Qué estoy haciendo mal? He buscado en Google pero parece que estoy haciendo casi todo.
El MultipartFile.getName
devuelve el nombre del parámetro en la forma de varias partes.
Para obtener los bytes de la MultipartFile
utilizaciónfile.getBytes()
Y si su MultipartFile
es un archivo de texto podría utilizar este método de utilidad para recuperar una lista de las líneas en ese archivo de texto:
public List<String> read(MultipartFile file) throws IOException {
InputStreamReader in = new InputStreamReader(file.getInputStream());
try (BufferedReader reader = new BufferedReader(in)) {
return reader.lines().collect(Collectors.toList());
}
}