Uploading file with other form fields in Angular 2 and Spring MVC

前端 未结 3 1239
逝去的感伤
逝去的感伤 2020-12-30 15:26

I am trying to upload file and other form field contents from my Angular 2 front end to Spring back end. But somehow I am not able to do it. Here is my code

3条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-30 16:08

    i'm tryning to use formData to send both myobject and a file form angular 2 to spring mvc deploed on websphere:

    ao.component.ts is:

    let input=new FormData();
        input.append('appelOffre', new Blob([JSON.stringify(appelOffre)],
            {
                type: "application/json"
            }));
        input.append('compteRendu',file);
    
        this._aoService.uploadAppelOffre(input)
        .subscribe(
          data => console.log('success'),
          error => console.log(error)
      );
    

    service is:

    uploadAppelOffre(input : FormData):  Observable{
    
      const headers = new Headers();
      const cpHeaders = new Headers({ 'Content-Type': 'application/json' });
      const options = new RequestOptions({ headers: cpHeaders });
      return this.http.post(this.uploadUrl, input, options)
      .map(this.extractData)
      .catch(error => Observable.throw(error))
    

    }

    ang my spring service is:

    @RequestMapping(value="uploadfile", method=RequestMethod.POST, consumes={"multipart/form-data"} )
        @ResponseBody
        public ResponseEntity addFile(@RequestPart("compteRendu") MultipartFile file, @RequestPart("appelOffre") AppelOffre ao){
    
            if(!file.isEmpty()){
                System.out.println("accepted: "+file.getOriginalFilename());
                File convFile = new File( file.getOriginalFilename());
                try {
                    file.transferTo(convFile);
                    ao.setLien_alfresco_cr(convFile.getAbsolutePath());
                   // service.addAppelOffre(ao);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            return new ResponseEntity(HttpStatus.CREATED);
    
        }
    

    Now using tomcat and mysql it works fine , but once deploed on web sphere i get the problem: [03/01/18 10:21:50:148 GMT] 0000008c srt W com.ibm.ws.webcontainer.srt.SRTServletResponse setHeader SRVE8094W: AVERTISSEMENT : Impossible de définir l'en-tête. La réponse a déjà été validée.

    and in console: POST http://localhost:4200/gtaows/services/uploadfile 415 (Unsupported Media Type)

    thx,

提交回复
热议问题