1

因此,我试图以 x-wwww-form-urlencoded 方式将图像和一些文本从 Angular 发送到我的 Spring Boot 后端。这是角度服务方法:

img(tags:HTMLInputElement, des:HTMLInputElement, selectFile){
    let url = "http://localhost:8080/api/v1/add_item"

    const body = new HttpParams()
    body.set("img", selectFile)
    body.set("tags", tags.value)
    body.set("des", des.value)

    return this.http.post<Isecurity[]>(url, body.toString(),{
      headers:new HttpHeaders()
      .set('Content-Type', 'application/x-www-form-urlencoded')
    } )
  }

在其余方面:

@PostMapping("add_item")
    @CrossOrigin
    public  Map<String, Boolean> add_item(@RequestParam MultipartFile img, @RequestParam String tags, @RequestParam String des){
        Map<String, Boolean> values = new HashMap<>();
        values.put("response", true);
        return values;}

我认为是因为 @RequestParam 标签,因为我得到的唯一响应是 500 服务器错误...

4

1 回答 1

0

我认为您以错误的方式传递参数。您只是将 params 的名称保留为 body,但它实际上不是 body。

您需要使用“?”传递参数 在网址之后。

因此,您必须更新 .ts 文件中的代码,如下所示:

img(tags:HTMLInputElement, des:HTMLInputElement, selectFile){
let url = "http://localhost:8080/api/v1/add_item?"

const params= new HttpParams()
params.set("img", selectFile)
params.set("tags", tags.value)
params.set("des", des.value)

return this.http.post<Isecurity[]>(url+params.toString(),{
  headers:new HttpHeaders()
  .set('Content-Type', 'application/x-www-form-urlencoded')
} )

}

于 2020-07-12T11:19:03.277 回答