如何使用java和JPA以及Spring将所有文档文件(如PDF,DOCX,XLS)上传到mysql数据库 提前致谢
答案 0 :(得分:1)
我确实遇到了类似的情况,但对您的要求进行了少量修改..,如
如果你对这个修改很酷,请看看我是如何开发的,
流程:UI(传递文件)--->(由IDE处理)---> DB(数据已保存)
创建一个DB Schema:(2 Coloumns)
现在用DB完成了,来到IDE&创建一个.jspx页面(没有Backing Bean!),Drag&从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 Component的“Value”字段设置为“#{backing_Upload.file}
”
其中backing_Upload是我的bean名称,文件为Paramater。
现在拖动&删除命令按钮&将其操作字段设置为“#{backing_Upload.UploadMedia}
”
其中backing_Upload是我的bean名称,UploadMedia是我的方法。
希望你在选择文件时能达到你想要的效果。单击按钮,文件将存储到DB。
答案 1 :(得分:0)
您无法在DATABASE中存储文件,但可以将其位置存储在表格中。