为了账号安全,请及时绑定邮箱和手机立即绑定

请求被拒绝,因为没有找到多部分边界 angular+spring

请求被拒绝,因为没有找到多部分边界 angular+spring

喵喔喔 2022-11-30 16:36:32
我正在尝试将最近使用 Angular2 下载的文件上传到 Spring API Rest。问题是(在 spring 应用程序上显示)...请求被拒绝,因为没有找到多部分边界在 org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.(FileUploadBase.java:831) ~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org.apache.tomcat.util .http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256)~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest( FileUploadBase.java:280) ~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org.apache.catalina.connector.Request.parseParts(Request.java:2869) ~[tomcat-embed-core -8.5.28.jar:8.5.28] 在 org.apache.catalina.connector.Request.parseParameters(Request.java:3216) ~[tomcat-embed-core-8.5.28.jar:8.5.28] 在 org .apache.catalina.connector.Request.getParameter(Request.java:1137) ~[tomcat-embed-core-8.5.28.jar:8.5.28]在客户端,请求以“multipart/form-data”作为内容类型发送。我该如何解决?文件下载器服务upload(file) {const formData = new FormData();formData.append('file', file);    const req = new HttpRequest('POST', this.urlUpload, file, {      headers: new HttpHeaders({'Content-Type':'multipart/form-data'}),      reportProgress: true    });    return this.http.request(req);  }应用组件  upload() {     let file = this.generate_dummy_file(50000000);     this.downloader.upload(file).subscribe( event => {        if (event.type === HttpEventType.UploadProgress) {        } else if (event instanceof HttpResponse) {          console.log('File is completly uploaded!');        }      });    }  generate_dummy_file(size) {    return new Blob([new ArrayBuffer(size)], {type: 'multipart/form-data'});  };和春天的一面@PostMapping("/uploadFile")    public UploadFileResponse uploadFile(@RequestParam("file") MultipartFile file) {        return ...;    }感谢您的帮助
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

尝试这个 ,


 const formData = new FormData();

 formData.append("file", file);

 formData.append("reportProgress", true);

使用http客户端,


 return this.httpclient.post(this.urlUpload, formData);


查看完整回答
反对 回复 2022-11-30
?
哔哔one

TA贡献1854条经验 获得超8个赞

你有没有设置内容类型?如果是这样,请将其删除。


headers:{

        "Content-Type":"multipart/form-data", // remove it

},

前端:


 const formData = new FormData();

    formData.append("file", file);

    formData.append("reportProgress", "true");


return this.http.post<void>(this.API_URL + '/upload', formData);

后端:


 @Operation(description = "Upload File")

    @ApiResponses(value = {

            @ApiResponse(responseCode = "201", description = "File Uploaded successfully"),

            @ApiResponse(responseCode = "400", description = "Problem during file upload ")

    })

    @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)

    @ResponseStatus(value = HttpStatus.CREATED)

    public void upload(@RequestPart("file") final MultipartFile file) {

        //action;

    }


查看完整回答
反对 回复 2022-11-30
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

你真的发送FormData到你的服务器吗?


尝试将文件包装在一个FormData对象中,HttpClient以便自动添加多部分边界。


upload(file) {

    const formData = new FormData();

    formData.append('file', file);

    const req = new HttpRequest('POST', this.urlUpload, formData, {

      headers: new HttpHeaders({'Content-Type':'multipart/form-data'}),

      reportProgress: true

    });

    return this.http.request(req);

  }


查看完整回答
反对 回复 2022-11-30
  • 3 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号