使用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 应用程序