【问题标题】:pdf,doc,xls file upload in mysql databasepdf,doc,xls文件上传到mysql数据库
【发布时间】:2012-06-23 16:14:35
【问题描述】:

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

【问题讨论】:

  • 如何用谷歌搜索uploading files using java

标签: java mysql jpa spring-mvc


【解决方案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 组件的“Value”字段设置为“#{backing_Upload.file}” 其中 backing_Upload 是我的 bean 名称,文件为参数。

现在拖放一个命令按钮并将其操作字段设置为“#{backing_Upload.UploadMedia}” 其中 backing_Upload 是我的 bean 名称,UploadMedia 是我的方法。

希望您在选择文件并单击按钮时实现您想要的文件存储到数据库。

【讨论】:

  • 感谢您的代码,让我尝试实现,再次感谢
【解决方案2】:

您不能将文件存储在数据库中,但可以将它们的位置存储在表中。

【讨论】:

  • 您可以将文件作为 BLOB 存储在数据库中。但我同意您应该将文件的路径存储在数据库中,并将文件本身存储在 fs 中。
  • @Nicolas:感谢重播,但我知道 BLOB 类型,但您有任何代码或示例,然后请告诉我,文件的数据将采用哪种格式,表示字节、字符串或其他任何东西,提前致谢
猜你喜欢
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多