必需的MultipartFile参数' file'我从Angular 4请求时不在场

时间:2018-01-31 01:20:46

标签: java spring angular spring-boot angular2-jwt

我可以请求从Postman上传文件,但是当我从Angular请求时,会返回WARN"必需的MultipartFile参数' file'不存在"

它遵循API中的资源。

@PostMapping
public ResponseEntity<Conteudo> publicaConteudo(@RequestParam("file") MultipartFile file) throws JsonParseException, JsonMappingException, IOException {
    /* ANYTHING */
    return ResponseEntity.ok(new Conteudo());
}

我在Angular的服务。我使用的是JWT,但我也尝试使用HttpClient来处理请求。

upload(file: File, conteudo: Conteudo): Promise<any> {
   let formData: FormData = new FormData();

   formData.append('file', file, file.name);

  /* USING JWT
   return this.http.post(this.conteudoUrl, formData)
    .toPromise()
    .then(response => response.json());
  */
     let h1 = new HttpHeaders().set('Authorization', 'Bearer ' + localStorage.getItem('token'));
     const req = new HttpRequest('POST',this.conteudoUrl, formData, {
         headers: h1
  });
  return this.httpClient.request(req).toPromise();
 }

我在Postman中的表现如何

enter image description here

我尝试了许多我找到的解决方案,比如创建一个Bean MultipartResolver和其他解决方案,但任何解决我的问题以及我认为更有趣的是它在Postman中运行良好。

1 个答案:

答案 0 :(得分:0)

在AbstractAnnotationConfigDispatcherServletInitializer类中你有这个方法吗?:

@Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter("UTF-8");
        encodingFilter.setForceEncoding(true);
        return new Filter[]{new DelegatingFilterProxy("springSecurityFilterChain"), 
            new OpenEntityManagerInViewFilter(),encodingFilter, new MultipartFilter()};
    }

也许你还没有注册多部分过滤器。希望这有帮助。

相关问题