如何使用java和JPA和Spring将PDF,DOCX,XLS等所有文档文件上传到mysql数据库提前谢谢
问问题
2154 次
2 回答
1
我确实遇到过类似的情况,但是对您的要求进行了细微修改..,例如
- DB - Oracle 11g(而不是 mySql)
- IDE - jDeveloper 11(照顾 Java,Swings - MVC)
如果你对这个修改很酷,请看看我是如何开发这个的,
流程:UI(传递文件)--->(IDE处理)--->DB(数据保存)
创建数据库模式:(2 列)
- 信息 - Varchar 2(数据类型)
- 媒体 - Blob
现在已经用 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 组件的“值”字段设置为“ #{backing_Upload.file}
”,其中 backing_Upload 是我的 bean 名称,文件为参数。
现在拖放一个命令按钮并将其操作字段设置为“ #{backing_Upload.UploadMedia}
”,其中 backing_Upload 是我的 bean 名称,UploadMedia 是我的方法。
希望您在选择文件和单击按钮时实现您想要的文件存储到数据库。
于 2012-06-21T12:56:36.457 回答
0
您不能将文件存储在数据库中,但可以将它们的位置存储在表中。
于 2012-06-21T12:26:50.040 回答