我正在尝试将文件上传到mysql数据库。
这是我的表格:
<!DOCTYPE html>
<html xmlns:th="http://www.themyleaf.org">
<head>
<meta charset="ISO-8859-1" />
<title>User</title>
</head>
<body>
<h1>Please enter the following to upload the file.</h1>
<form action="#" th:action="@{/uploadToDB}" th:object="${doc}" method="post">
<p>Author: <input type="text" th:field="*{author}" /></p>
<p>Publication date: <input type="text" th:field="*{pubDate}" /></p>
<p>Title: <input type="text" th:field="*{title}" /></p>
<p>Editor: <input type="text" th:field="*{editor}" /></p>
<p>Content type: <input type="text" th:field="*{contentType}" /></p>
<p>Size: <input type="text" th:field="*{size}" /></p>
<p>Content: <input name="userfile" type="file" id="userfile" th:field="*{content}"></input></p>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"></input>
<p><input type="submit" value="Upload" /> <input type="reset" value="Reset" /></p>
</form>
</body>
</html>
然后将这些值设置为my bean Document :
@SuppressWarnings("serial")
@Component
public class Document implements Serializable {
private String author;
private String pubDate;
private String title;
private String uploadDate;
private String editor;
private String id;
private String contentType;
private String size;
private Blob content;
//setters and getters
现在我遇到的问题是我不知道<input type="file">
隐含的类型。当我将content
设置为Blob
时,它会生成错误,这是我要插入数据库的类型。
我之前使用的是String
,但它似乎也不是好的类型。我可以将它插入我的数据库。但我无法从我的数据库中检索文件以显示它或之后下载它。
我很感激任何帮助!
答案 0 :(得分:3)
@duffymo回答了这个问题。只需使用byte []。
答案 1 :(得分:1)
在表格标记中使用enctype
属性。
<form action="#" th:action="@{/uploadToDB}" th:object="${doc}" method="post" enctype="multipart/form-data">
并使用byte[]
因为像Mysql和Oracle这样的数据库以二进制格式存储多媒体数据。并使用byte[]
数组存储数据。