Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Can';t使用角响应形式发送多部分请求_Angular_Multipartform Data_Angular Reactive Forms_Reactive Forms - Fatal编程技术网

Angular Can';t使用角响应形式发送多部分请求

Angular Can';t使用角响应形式发送多部分请求,angular,multipartform-data,angular-reactive-forms,reactive-forms,Angular,Multipartform Data,Angular Reactive Forms,Reactive Forms,我的Java后端API期望在Angular前端对表单发出多部分POST请求,该前端当前使用的是反应式表单。端点如下所示: @PostMapping("/submit") public ResponseEntity<?> submit( @RequestParam String requester, @RequestParam String subject, @RequestParam String description, @R

我的Java后端API期望在Angular前端对表单发出多部分POST请求,该前端当前使用的是反应式表单。端点如下所示:

  @PostMapping("/submit")
  public ResponseEntity<?> submit(
      @RequestParam String requester,
      @RequestParam String subject,
      @RequestParam String description,
      @RequestParam String htmlBody,
      @RequestParam String customFieldValues,
      @RequestParam List<MultipartFile> attachments) {

    return myBackendService.submitToZendesk(
        requester, subject, description, htmlBody, customFieldValues, attachments);
  }
服务:

  public submitForm(payload: any): Observable<any> {
    return this.resourceService.submitForm(payload)
  }
  public submitShippingAuth(payload: ShippingAuthRequest): Observable<any> {
    const url = `${environment.api}/submit`
    return this.http.post(`${url}`, payload)
      .pipe(map(this.extractResponse), catchError(this.handleError))
  }
但我的请求负载似乎确实包含表单数据:

------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="requester"

ryan
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="subject"

Test Subject
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="description"

test desc
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="htmlBody"


------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="customFieldValues"

test
------WebKitFormBoundaryTIuEnyoDjbqZHnFA--

有人知道我做错了什么吗?Postman中的表单数据POST有效。

打印请求者的行应包含逗号(,),如下所示 append('requester','ryan',)


希望这能解决你的问题

提交功能看起来确实不错,
formData.append中的第三个参数是文件名,因此不需要。我唯一发现的是,您没有在
httppost
请求中设置头。我猜您正在使用
拦截器来执行此操作,如果没有,请尝试这样做

谢谢你的建议,萨普纳。不幸的是,这并没有解决它。是否有一个额外的逗号必须存在的原因,或者您只是指出了一个不一致的地方?据我所知,
formData.append的第三个参数仅用于文件名,因此在本例中不需要它
error: "Bad Request"
message: "Required String parameter 'requester' is not present"
path: "/v1/submit"
status: 400
timestamp: 1571771034002
trace: "org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'requester' is not present
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="requester"

ryan
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="subject"

Test Subject
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="description"

test desc
------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="htmlBody"


------WebKitFormBoundaryTIuEnyoDjbqZHnFA
Content-Disposition: form-data; name="customFieldValues"

test
------WebKitFormBoundaryTIuEnyoDjbqZHnFA--