Spring boot 当我向spring boot发送表单数据和对象时,当前请求不是多部分请求

Spring boot 当我向spring boot发送表单数据和对象时,当前请求不是多部分请求,spring-boot,angular8,Spring Boot,Angular8,我正在从angular向Spring boot发送一个自定义对象和formData,但抛出了一个错误——“当前请求不是一个多部分请求” 当我这样做的时候,一切都很好 棱角的 private base_url = "http://localhost:8082"; addProduct(product:Product,file:File) :Observable<any> { const headers = new HttpHeaders({ Auth

我正在从angular向Spring boot发送一个自定义对象和formData,但抛出了一个错误——“当前请求不是一个多部分请求”

当我这样做的时候,一切都很好

棱角的

private base_url = "http://localhost:8082";


  addProduct(product:Product,file:File) :Observable<any>
  {
      const headers = new HttpHeaders({
      Authorization: 'Bearer ' + sessionStorage.getItem("authToken")})

      let formData = new FormData();
      formData.append("file",file);

    return this.httpClient.post<any>(this.base_url+"/api/addProduct",formData,{headers});
 or 
return this.httpClient.post<any>(this.base_url+"/api/addProduct",product,{headers});
我当前的实现是下面的代码,但它不起作用。 我得到一个错误-当前请求不是多部分请求。 如何将产品和表单数据发送到spring boot应用程序。我需要帮助。 棱角的


可以在多部分文件和数据的表单数据中使用角度代码

const formData = new FormData();

formData.append('file',this.pdfFile,this.pdfFile.name);//append for file

formData.append('key',Value);//append for data
formData.append('key',Value);
例如,formData.append('productName','product.productName')


您可以尝试此代码您的标题应包含
“内容类型”:“多部分/表单数据”

请将此添加到标题中

const HttpUploadOptions = {
  headers: new HttpHeaders({ "Content-Type": "multipart/form-data" })
}

尝试使用xmlHttpRequest而不是httpClient

const formData = new FormData();
//file is your uploaded file
formData.append("file", file) 

const xhr = new XMLHttpRequest()

xhr.onreadystatechange = (e) => {

  if (xhr.status === 200) {
    console.log('SUCCESS', xhr.responseText);
  } else {
    console.warn('request_error');
  }
};

xhr.open('POST', 'UPLOAD_URL', true);
xhr.send(formData);

请确保您的microservice accept multipartfile with key为“file”

谢谢您的回答,这是唯一对我有效的方法
const formData = new FormData();

formData.append('file',this.pdfFile,this.pdfFile.name);//append for file

formData.append('key',Value);//append for data
formData.append('key',Value);
const headers = new HttpHeaders({
      Authorization: 'Bearer ' + sessionStorage.getItem("authToken")})

this.httpClient.post<any>(this.base_url+"/api/addProduct', formData ,headers).subscribe(
  (response) => {
console.log(response); }
@PostMapping("/addProduct")
public void addProduct(@RequestBody Product product)
{

}
const HttpUploadOptions = {
  headers: new HttpHeaders({ "Content-Type": "multipart/form-data" })
}
const formData = new FormData();
//file is your uploaded file
formData.append("file", file) 

const xhr = new XMLHttpRequest()

xhr.onreadystatechange = (e) => {

  if (xhr.status === 200) {
    console.log('SUCCESS', xhr.responseText);
  } else {
    console.warn('request_error');
  }
};

xhr.open('POST', 'UPLOAD_URL', true);
xhr.send(formData);