当前位置: 首页 > 知识库问答 >
问题:

从Angular 8向Spring Boot App发送文件(图像)

公冶智刚
2023-03-14

我想从我的angular 8应用程序向我的Spring启动服务器发送一个文件

我在Spring尝试了 - MultiPartFile,HttpServletRequest和一些其他方法,但没有成功。

我希望有人能告诉我如何在Spring获得文件...如果需要在我的角度应用程序中进行一些更改。

角8

<input ngModel type="file" name="file" (change)="fileChange($event)" class="form-control-file" id="exampleInputFile" aria-describedby="fileHelp" required>
fileChange(event) {
    this.imageMentor = event.target.files[0];
  }

当我发送文件时-在组件中

onFormSubmitMentor() {

    const dataImage = new FormData();
    dataImage.append('myFile', this.imageMentor, this.imageMentor.name);
    this.useDetailsService.addMentor(dataImage).subscribe(data => {
      }, Error => {
        if (Error.error.error === 'Unauthorized') {
          alert('Unauthorized');
        }
      });
  }

服务

addMentor(dataImage) {
    const token = JSON.parse(localStorage.getItem('currentUser'));
    let headers = new HttpHeaders();
    headers = headers.append('Authorization', 'Bearer ' + token.token);
    headers = headers.append('Content-type', 'application/json');
    console.log(dataImage);
    return this.http
      .post(
        'http://localhost:8080/register/mentor',{file: dataImage}, {headers, responseType: 'text'}
      ).pipe(map((response: any) => {
        console.log(response);
        return response;
      }), catchError((err: any) => {
        console.log(err);
        return throwError(err);
      }));
  }

Spring靴

@RequestMapping(value = "/register/mentor", method = RequestMethod.POST,consumes = "application/json")
    @ResponseBody
    public ResponseEntity<?> registerMentor(HttpServletRequest request) throws Exception {
//        connectionValidation.isAdmin();
        StringBuilder builder = new StringBuilder();
        try (BufferedReader in = request.getReader()) {
            char[] buf = new char[4096];
            for (int len; (len = in.read(buf)) > 0; )
                builder.append(buf, 0, len);
        }
        String requestBody = builder.toString();
        return saveMentorUser(new Mentor());
//        return saveMentorUser(mentor);
    }

我试过这个

https://medium.com/@udith.indrakantha/upload-images-and-save-them-in-a-database-angular-8-spring-boot-mysql-b5144768202b

共有2个答案

龙弘济
2023-03-14

标题内容被设置为JSON,这可能必须设置为form-data作为您传递的表单数据

js prettyprint-override">    headers = headers.append('Content-type', 'multipart/form-data');
漆雕奇逸
2023-03-14

我查看了Heroku CLI,我确认这不是一个cors问题,但是,我在Spring的一个功能抛出了一个连接到Mongo的错误,但我想Heroku不理解它并回复了cors问题。

 类似资料:
  • 我想通过套接字从我的客户端(这是一个Java应用程序)发送一个图像到我的服务器,服务器应该用Python编程。不幸的是,我是Python/Java编程的新手,不理解我在网上找到的大多数方法,但到目前为止似乎效果最好的是: 在客户端,我这样做了 如果我理解正确,只需将图像数据以bytearray的形式发送到接收端口。 现在,在服务器(Python)上,我有以下内容: 它似乎可以传输数据,因为在启动我

  • 问题内容: 我是Android编程的新手,我的任务是将图像和文本数据发送到Web服务器(本地主机),但是我尝试了很多代码来完成这项工作 他们都不会工作。每当我尝试执行代码时,我的应用就会崩溃,因此我决定调试代码,然后查看问题出在哪里。然后我发现 每当找到 MultipartEntity时 ,代码就会崩溃..我真的不知道为什么.. 代码像这样 我已将Logs包含到代码中,以查看代码在执行过程中的停止

  • 我目前正试图通过Twilio向WhatsApp发送多张图片,并让它与一张一起工作。我已经读过其他问题了,这个问题可能很容易。 如何在一条消息中发送多个图像? 这是我目前拥有的,也是我尝试过的,但第二张图片从未发送:

  • 我将pdf文档存储在服务器端的文件系统中。 我需要让用户下载其中一个,当他/她点击下载。 问题是我知道如何将文件从NodeJS发送到浏览器,但这里的请求将由ReactJS axios请求发出。因此,当我发送文件时,响应将转到react。如何将该pdf文件发送给用户?我是否使用前端代码直接访问文件系统? 在NodeJS中执行之后,当我记录响应时,我在浏览器控制台中获得以下信息 我如何处理这个问题,以

  • 我正在使用Spring webSocket(STOMP作为子协议)和Sockjs开发一个消息应用程序。 我应该提供支持在消息中发送文件。 根据这张票证,sockjs不支持二进制数据,但STOMP支持。 我知道我们可以将图像转换为base64并通过stomp发送,但我认为这不是最佳做法,因为转换和开销很大。我还必须保存消息,所以要在服务器上再次保存这个base64编码的文件,我必须对它们进行解码。

  • 问题内容: 我尝试将邮件从python发送到从.txt文件导入的多个电子邮件地址,我尝试了differend语法,但是没有任何效果… 编码: 因此,我尝试了此操作以从.txt文件导入收件人地址: mainList.txt包含: 但这行不通… 我也尝试做: 和 有谁知道该怎么办? 非常感谢! 问题答案: 并将每个收件人放在自己的 行上 (即以换行符分隔)。