使用spring boot hibernate将文件上传到数据库

Posted

技术标签:

【中文标题】使用spring boot hibernate将文件上传到数据库【英文标题】:Uploading file to database using spring boot hibernate 【发布时间】:2018-05-16 08:46:49 【问题描述】:

我需要在数据库中上传文件,这是我尝试过的

域名:

    @NotNull
    @Lob
    @Column(name = "data", nullable = false)
    private byte[] uploadData;

控制器:

@PostMapping(value = "/uploadData" , consumes = "application/json")
    public ResponseEntity< DataInfo > uploaddata(@Valid @RequestBody DataInfo dataInfo)
        DataInfo uploadData = dataR.save(dataInfo);
        return new ResponseEntity("OK",HttpStatus.CREATED);
    

这是邮递员的回复

时间戳”:1512210715164, “状态”:415, "error": "不支持的媒体类型", “异常”:“org.springframework.web.HttpMediaTypeNotSupportedException”, "message": "不支持内容类型 'application/x-www-form-urlencoded'", “路径”:“/api/uploadData”

我做错了什么?请帮忙 。在这里,我必须将文件上传到数据库。数据信息包含带有附件的信息。

【问题讨论】:

Spring : File Upload RESTFUL Web Service的可能重复 不,我有一个域,网络客户端应该发送包含附件作为有效负载的数据信息 您的映射设置为consumes = "application/json"。您正在发送application/x-www-form-urlencoded。控制器正在返回异常。你到底在发布什么?如果没有更多信息,对 davioooh 的重复标志的接受答案将是适当的。 请输入您收到的客户端代码或payload。 【参考方案1】:

当您尝试从客户端发送文件时,必须将文件作为多部分数据进行处理。 (你可以参考这里了解更多关于Multipart请求here)

@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Document> UploadFile( @RequestParam("file") MultipartFile file) 
    // Upload Logic

此外,您可以在服务属性中指定文件大小,如下所示:

  http:
    multipart:
      max-file-size: 10mb
      max-request-size: 12mb

【讨论】:

以上是关于使用spring boot hibernate将文件上传到数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 JPA/Hibernate 将 Spring Boot 连接到 PostgreSql 数据库时失败

spring boot中使用hibernate 拦截sql语句 (StatementInspector)

如何使用 Spring Boot 2.0 指定 Hibernate 映射?

使用 Spring Boot + Hibernate + MySql 运行 MVC 应用程序

我遇到了使用 spring-boot 2.0.2.RELEASE 进行 Hibernate/lucene 搜索的问题

使用 Spring boot 时的两个版本的 Hibernate