码迷,mamicode.com
首页 > Web开发 > 详细

OAF_文件系列1_实现OAF文件上传和下载MessageFileUpload/MessageDownload(案例)

时间:2015-08-05 10:22:44      阅读:2798      评论:0      收藏:0      [点我收藏+]

标签:

20150707 Created By BaoXinjian

技术分享一、摘要


1. 文件上传

首先建立用于存放附件的临时视图对象(View Object),包含Blob类型的视图属性(View Attribute),建立页面包含messageFileUpload类型的Item,并创建页面的控制器。

 

2. 文件下载

这里要实现的功能是当单击附件链接时,能自动打开附件保存对话框.

 

技术分享二、文件上传


1. 创建messageFileUpload空间,其类型为BLOB

技术分享

 

2. 创建CO实现方法

作用1. 数据保存至VO Blob中

作用2. 将VO中Blob数据保存至server上

  public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
  {
    super.processFormRequest(pageContext, webBean);
    
      EmpManageAMImpl empAM = (EmpManageAMImpl) pageContext.getApplicationModule(webBean);

      if ("upload".equals(pageContext.getParameter(EVENT_PARAM))) {
          try {
            EmployeeFilesVOImpl empfilevo = empAM.getEmployeeFilesVO();
            EmployeeFilesVORowImpl empfilerow = (EmployeeFilesVORowImpl) empfilevo.getCurrentRow();
            BlobDomain blob = (BlobDomain) empfilerow.getEmployeeFile();
            InputStream instream = blob.getBinaryStream();
            
            File directory = new File("/u2/VIS/visappl/gavin/files"); 
            if(!directory.exists()) {
              directory.mkdirs();  
            }
            String filename = empfilerow.getFileId().toString()+".txt";
            File file = new File (directory + filename);
            FileOutputStream outstream = new FileOutputStream(file);
            
            int size = blob.getBufferSize();
            byte[] buffer = new byte[size];
            int length = 0;
            while ((length = instream.read(buffer)) != -1) {
              outstream.write(buffer, 0, length);
            }
            
            instream.close();
            outstream.flush();
            outstream.close();
            
            empAM.getOADBTransaction().commit();
          }catch(IOException ex) {
            empAM.getOADBTransaction().rollback();
            ex.printStackTrace();
          } 
      }
    
  }

 

技术分享三、文件下载


1. 创建一个MessageDown类型的空间,其会将附件显示在页面之上

技术分享

 

2. 创建CO方法,将数据中的Blob数据通过或response保存至本地

  public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
  {
    super.processFormRequest(pageContext, webBean);
    
      EmpManageAMImpl empAM = (EmpManageAMImpl) pageContext.getApplicationModule(webBean);
  
      if ("download".equals(pageContext.getParameter(EVENT_PARAM))) {
          try {
            EmployeeFilesVOImpl empfilevo = empAM.getEmployeeFilesVO();
            EmployeeFilesVORowImpl empfilerow = (EmployeeFilesVORowImpl) empfilevo.getCurrentRow();
            BlobDomain blob = (BlobDomain) empfilerow.getEmployeeFile();
            InputStream instream = blob.getBinaryStream();
            
            HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();
            response.addHeader("Content-Disposition", "attachment;filename="+ "gavin.txt");
            response.setContentType("application/x-msdownload");

            int size = blob.getBufferSize();
            byte[] buffer = new byte[size];
            int length = 0;

            while ((length = instream.read(buffer)) != -1) {
              response.getOutputStream().write(buffer,0,length);
            }
            instream.close();
            response.getOutputStream().flush();
            response.getOutputStream().close();

            empAM.getOADBTransaction().commit();
          }catch(IOException ex) {
            empAM.getOADBTransaction().rollback();
            ex.printStackTrace();
          } 
      }
  }

 

技术分享四、测试上传下载文件


Test1. 文件上传测试

Step1. 将employee.txt上传至服务器上

技术分享

Step2. 查看上传后,文本文件会分别保存至数据库和服务器上

技术分享

Step3.1  上传至服务器上

技术分享

Step3.2  上传至数据库中

技术分享

Step4. 上传后显示在页面中

技术分享

 

Test2. 文件下载测试

Step1. 文件下载

技术分享

Step2. 文件下载后保存至数据库中

技术分享

 

Thanks and Regards

技术分享

OAF_文件系列1_实现OAF文件上传和下载MessageFileUpload/MessageDownload(案例)

标签:

原文地址:http://www.cnblogs.com/eastsea/p/4616929.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!