什么java类型对应<input type =“file”/>?

时间:2016-12-30 17:53:47

标签: spring-boot thymeleaf

我正在尝试将文件上传到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,但它似乎也不是好的类型。我可以将它插入我的数据库。但我无法从我的数据库中检索文件以显示它或之后下载它。

我很感激任何帮助!

2 个答案:

答案 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[]数组存储数据。