在mysql数据库中上传pdf,doc,xls文件

时间:2012-06-21 12:18:12

标签: java mysql jpa spring-mvc

如何使用java和JPA以及Spring将所有文档文件(如PDF,DOCX,XLS)上传到mysql数据库 提前致谢

2 个答案:

答案 0 :(得分:1)

我确实遇到了类似的情况,但对您的要求进行了少量修改..,如

  • DB - Oracle 11g(而不是mySql)
  • IDE - jDeveloper 11(照顾Java,Swings - MVC)

如果你对这个修改很酷,请看看我是如何开发的,

流程:UI(传递文件)--->(由IDE处理)---> DB(数据已保存)

创建一个DB Schema:(2 Coloumns)

  • 信息 - Varchar 2(数据类型)
  • 媒体 - Blob

现在用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中存储文件,但可以将其位置存储在表格中。