1

J'écris un contrôleur REST qui devrait permettre aux utilisateurs de télécharger leurs fichiers.Spring: Méthode non autorisée lors du téléchargement

J'ai une classe

@RestController 
@RequestMapping("/profiles/{userId}/files") 
public class FileController { 

    @PostMapping(path = "upload") 
    public String uploadFile(@PathVariable("userId") long userId, 
              @RequestParam("file") MultipartFile file) throws IOException { 
    //some logic here 

    } 

Mais je reçois

{ 
"timestamp": 1502301243676, 
"status": 405, 
"error": "Method Not Allowed", 
"message": "Method Not Allowed", 
"path": "/profiles/12351/files/upload" 
} 

Ai-je fait quelque chose de mal? Post demande sans @PathVariable fonctionne très bien, mais j'ai besoin de celui-ci.

+0

Comment invoquez-vous cette ressource? –

+0

@RossiRobinsion via Facteur –

+0

Probablement besoin de jeton 'CSRF'. –

Répondre

-1

Utilisez le code ci-dessous

@RestController 
    @RequestMapping("/profiles/{userId}/files") 
    public class FileController { 

     @RequestMapping(value = "upload", method = RequestMethod.POST) 
     public String uploadFile(@PathVariable("userId") long userId, 
               @RequestParam("file") MultipartFile file) throws IOException { 
     //some logic here 

     } 
+0

@PostMapping n'a pas les paramètres "méthode". C'est équivalent à @RequestMapping (méthode = POST) –

+0

@NikolayRomanov Code modifié, merci – Akash

+0

@Akash requestmapping avec requestmethod post est équivalent à post-mappage, votre code est le même –

0

Merci, les gars. Au moins, j'ai trouvé la raison. C'était de ma faute: j'ai beaucoup de contrôleurs différents et l'un d'entre eux était "/profiles/{userId}/{source}" avec la méthode GET qui a été mappée sur le même point de terminaison. Donc, ce contrôleur a essayé de gérer ma demande, mais n'a pas pu. J'ai changé de chemin et mon premier est devenu travail. Merci pour vos attentions et vos réponses.