J'ai donc une API Java et j'utilise des commandes cURL pour envoyer des requêtes GET / POST à mon API. J'utilise Springboot dans mon API Java. Ma commande curl ressemble à ceci:
curl -X POST \
https://localhost:8443/abc/code/v \
-H 'Content-Type: multipart/form-data' \
-F file=@/path/to/file.txt
et ma méthode Java Springboot qui reçoit cette demande ressemble à ceci:
@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());
}
qui imprime "file: file"
Il ne ressemble pas file.txt
est téléchargé sur le serveur du tout! Qu'est-ce que je fais mal? Je l' ai regardé sur Google , mais il semble que je fais presque tout.
Le MultipartFile.getName
retourne le nom du paramètre sous la forme multipart.
Pour obtenir les octets de l' MultipartFile
utilisationfile.getBytes()
Et si votre MultipartFile
est un fichier texte que vous pouvez utiliser cette méthode utilitaire pour récupérer une liste des lignes dans ce fichier texte:
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());
}
}