【发布时间】:2012-06-23 16:14:35
【问题描述】:
如何使用 java、JPA 和 Spring 将 PDF、DOCX、XLS 等所有文档文件上传到 mysql 数据库 提前致谢
【问题讨论】:
-
如何用谷歌搜索
uploading files using java
标签: java mysql jpa spring-mvc
如何使用 java、JPA 和 Spring 将 PDF、DOCX、XLS 等所有文档文件上传到 mysql 数据库 提前致谢
【问题讨论】:
uploading files using java
标签: java mysql jpa spring-mvc
我确实遇到过类似的情况,但对您的要求进行了细微修改......,例如
如果你对这个修改很满意,请看看我是如何开发这个的,
流程:UI(传递文件)--->(IDE处理)--->DB(数据保存)
创建数据库架构:(2 列)
现在使用 DB 完成,来到 IDE 并创建一个 .jspx 页面(没有支持 Bean!),从 Component Palette 拖放 InputFile 组件。创建一个托管 bean 并编写以下代码以将文件作为参数从 UI 接收并进一步处理。
代码:-
public class Upload()
{
private UploadedFile _file;
public void setFile(UploadedFile _file) {
this._file = _file;
}
public UploadedFile getFile() {
return _file;
}
public String UploadMedia(){
UploadedFile myFile = (UploadedFile)this.getFile();
System.out.println("****************************************************");
BindingContext bc = BindingContext.getCurrent();
BindingContainer bindings = bc.getCurrentBindingsEntry();
DCBindingContainer dbc = (DCBindingContainer)bindings;
DCIteratorBinding iter = dbc.findIteratorBinding("MediadbVO1Iterator");
Row row = iter.getCurrentRow();
row.setAttribute("Media", createBlobDomain(myFile));
return null;
}
private BlobDomain createBlobDomain(UploadedFile file) {
InputStream in = null;
BlobDomain blobDomain = null;
OutputStream out = null;
try {
in = file.getInputStream();
blobDomain = new BlobDomain();
out = blobDomain.getBinaryOutputStream();
byte[] buffer = new byte[8192];
int bytesRead = 0;
while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
out.write(buffer, 0, bytesRead);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.fillInStackTrace();
}
return blobDomain;
}
}
将 InputFile 组件的“Value”字段设置为“#{backing_Upload.file}”
其中 backing_Upload 是我的 bean 名称,文件为参数。
现在拖放一个命令按钮并将其操作字段设置为“#{backing_Upload.UploadMedia}”
其中 backing_Upload 是我的 bean 名称,UploadMedia 是我的方法。
希望您在选择文件并单击按钮时实现您想要的文件存储到数据库。
【讨论】:
您不能将文件存储在数据库中,但可以将它们的位置存储在表中。
【讨论】: