2017-10-04 7 views
2

J'essaie d'envoyer une requête POST à ​​mon contrôleur, mais je ne peux pas passer de paramètre quel que soit le type à moins que je décide d'utiliser JSON. Mon but est de passer une chaîne et un fichier à mon contrôleur mais je continue à obtenir l'erreur Required request part 'xxx' is not present.Téléchargement du fichier Spring - 'La partie Requête requise n'est pas présente'

@RestController 
public class ConfigurationController { 
    @PostMapping(value = "/config") 
    public ResponseEntity<?> saveEnvironmentConfig(@RequestParam("file") MultipartFile uploadfile){ 
     return ResponseEntity.ok().body(null); 
    } 
} 

Je ne peux pas avoir de fichier ici. De même si j'essaie:

@RestController 
public class ConfigurationController { 
    @PostMapping(value = "/config") 
    public ResponseEntity<?> saveEnvironmentConfig(@RequestParam("name") String name){ 
     return ResponseEntity.ok().body(null); 
    } 
} 

même chose que je ne peux pas obtenir le nom ici.

J'envoie la demande via Postman comme indiqué dans capture d'écran suivante:

Postman Request

Postman Request 2

La balise d'en-tête est seulement pour l'autorisation. Je n'ai aucun en-tête de type de contenu, j'ai essayé d'ajouter multipart/form-data mais n'a pas aidé.

La seule façon de transmettre le paramètre String est d'ajouter à l'URL. Donc, après http://localhost:8080/SearchBox/admin/config?name=test fonctionne mais ce n'est pas ce que je veux. Je veux des paramètres String et File dans la partie Body.

J'ai aussi testé via CURL:

curl -X POST -H "Authorization:Bearer myToken" -H "Content-Type:Multipart/form-data" http://localhost:8080/SearchBox/admin/config --data 'pwd=pwd' 
curl -X POST -H "Authorization:Bearer myToken"http://localhost:8080/SearchBox/admin/config --data 'pwd=pwd' 
curl -H "Authorization:Bearer myToken" -F [email protected]"/g123.conf" http://localhost:8080/SearchBox/admin/config 

Note: J'ai vérifié des postes similaires déjà, mais n'a pas aidé This, This, This

Répondre

3

J'ai finalement résolu la question et de partager ma solution au cas où quelqu'un d'autre peut faire face au même problème.

@RestController 
@RequestMapping("/") 
public class ConfigurationController { 

    @Bean 
    public MultipartConfigElement multipartConfigElement() { 
     return new MultipartConfigElement(""); 
    } 

    @Bean 
    public MultipartResolver multipartResolver() { 
     org.springframework.web.multipart.commons.CommonsMultipartResolver multipartResolver = new org.springframework.web.multipart.commons.CommonsMultipartResolver(); 
     multipartResolver.setMaxUploadSize(1000000); 
     return multipartResolver; 
    } 
    @PostMapping(value = "/config", consumes = "multipart/form-data") 
    public ResponseEntity<?> saveEnvironmentConfig(@RequestParam("password") String password, @RequestParam("file") MultipartFile submissions) 
      throws AdminAuthenticationException, ConfigurationException { 
     return ResponseEntity.ok().body(null); 
    } 
} 
2

Je soupçonne que la raison principale est @RequestParam (» fichier ") il devrait y avoir @RequestBody à la place.

+0

'@RequestBody @RequestParam (" name ") Le nom de la chaîne ne fonctionnait pas. Lorsque j'essaie la variable de nom '@RequestBody String name', j'obtiens la valeur suivante: ' ------ WebKitFormBoundary6WJHhVqqZrh8qeAX Content-Disposition: form-data; name = "nom" Test ------ WebKitFormBoundary6WJHhVqqZrh8qeAX-- ' –

1
@RequestMapping(value = "/upload", method = RequestMethod.POST) 
public ResponseEntity<?> upload(@RequestParam(value = "name") String 
name,@RequestParam(value = "file") MultipartFile file){ 
    // TODO check file is not null and save 
    return new ResponseEntity<>(HttpStatus.valueOf(200));; 
} 

enter image description here

+0

même :( { "message": "paramètre Chaîne Obligatoire 'title' est pas présent", "statut": 400, » error errors:: ["Le paramètre String obligatoire 'title' n'est pas présent"]} –

+0

change le format de paramètre pour "fichier" de Text to File à partir du menu déroulant et sélectionne le fichier que tu voulais télécharger – baba

+0

J'essaie de la même façon ne fonctionne pas même erreur –