1
resposta

Upload de arquivo

Bom dia, estou tentando fazer um upload de arquivo com springboot e angular2, e me deparei com um erro, que mesmo com algumas pesquisas não estou conseguindo resolver.

org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found.

@RestController
@RequestMapping(value="rg")
public class RegistroGeralController {

    @RequestMapping(value="/salvar", method=RequestMethod.POST)
    public ResponseEntity<?> salvar(@RequestParam("file") MultipartFile file){

        System.err.println("Seu arquivo foi salvo: " + file.getName());

        return new ResponseEntity<>(HttpStatus.OK);

    }
}
constructor(http: Http){

        this.http = http;
        this.headers = new Headers();
        //this.headers.append('Content-Type','application/json');
        //this.headers.append('enctype','multipart/form-data');
        this.headers.append('Content-Type','multipart/form-data');
        this.headers.append('Access-Control-Allow-Origin', this.SERVIDOR);
        this.headers.append('Access-Control-Allow-Methods', 'POST');
        this.headers.append('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
        this.headers.append('Access-Control-Allow-Credentials', 'true');

    }

    cadastra(rg: File ): Observable<MensagemCadastro>{
        return this.http
                .post(this.SERVIDOR + this.url, rg, {headers: this.headers})
                 .map(() => new MensagemCadastro('Arquivo incluído com sucesso', true));

    }

Como posso corrigir isso ?

1 resposta

Olá Raphael,

Para realizar tal função você precisa de algo que fale como entender o arquivo que vem do cliente, o Multipart. Nesse link https://spring.io/guides/gs/uploading-files/ ele ensina a fazer isso. para funcionar você pode adicionar isso para o seu controller

@RestController
@RequestMapping(value="rg")
public class RegistroGeralController {
 private final StorageService storageService;

    @Autowired
    public RegistroGeralController (StorageService storageService) {
        this.storageService = storageService;
    }
....

e para realmente salvar o o arquivo adicionar isso storageService.store(file); ao seu método.

Espero ter ajudado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software