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

我正在尝试将最近使用 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 ...;

    }

感谢您的帮助


喵喔喔
浏览 156回答 3
3回答

慕妹3242003

尝试这个 , const formData = new FormData(); formData.append("file", file); formData.append("reportProgress", true);使用http客户端, return this.httpclient.post(this.urlUpload, formData);

哔哔one

你有没有设置内容类型?如果是这样,请将其删除。headers:{&nbsp; &nbsp; &nbsp; &nbsp; "Content-Type":"multipart/form-data", // remove it},前端:&nbsp;const formData = new FormData();&nbsp; &nbsp; formData.append("file", file);&nbsp; &nbsp; formData.append("reportProgress", "true");return this.http.post<void>(this.API_URL + '/upload', formData);后端:&nbsp;@Operation(description = "Upload File")&nbsp; &nbsp; @ApiResponses(value = {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ApiResponse(responseCode = "201", description = "File Uploaded successfully"),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @ApiResponse(responseCode = "400", description = "Problem during file upload ")&nbsp; &nbsp; })&nbsp; &nbsp; @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)&nbsp; &nbsp; @ResponseStatus(value = HttpStatus.CREATED)&nbsp; &nbsp; public void upload(@RequestPart("file") final MultipartFile file) {&nbsp; &nbsp; &nbsp; &nbsp; //action;&nbsp; &nbsp; }

慕桂英3389331

你真的发送FormData到你的服务器吗?尝试将文件包装在一个FormData对象中,HttpClient以便自动添加多部分边界。upload(file) {&nbsp; &nbsp; const formData = new FormData();&nbsp; &nbsp; formData.append('file', file);&nbsp; &nbsp; const req = new HttpRequest('POST', this.urlUpload, formData, {&nbsp; &nbsp; &nbsp; headers: new HttpHeaders({'Content-Type':'multipart/form-data'}),&nbsp; &nbsp; &nbsp; reportProgress: true&nbsp; &nbsp; });&nbsp; &nbsp; return this.http.request(req);&nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java