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

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

时间: 2024-07-30 07:56:40

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

面试题:编写上传和下载文件测试用例

编写上传和下载文件测试用例 走火入魔系列之:上传|下载文件 一.题目: 如何编写上传和下载文件测试用例 1. 上传功能测试点 假如:我们要调试上传功能,前端代码为: <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <

【转】每天一个linux命令(26):用SecureCRT来上传和下载文件

原文网址:http://www.cnblogs.com/peida/archive/2012/11/28/2793181.html 用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的

linux命令学习笔记(26):用SecureCRT来上传和下载文件

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的起止时间.错误的判断与纠正等内容.常见的传输协议有以下几种: ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这

Java 文件上传与下载、email

1. 文件上传与下载 1.1 文件上传 文件上传,要点: 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data 手动实现文件上传 <body> <form name="frm_test" 

每天一个linux命令(26):用SecureCRT来上传和下载文件

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的起止时间.错误的判断与纠正等内容.常见的传输协议有以下几种:  ASCII:这是最快的传输协议,但只能传送文本文件.  Xmodem

每天一个linux命令(26):用SecureCRT来上传和下载文件(转载自竹子)

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的起止时间.错误的判断与纠正等内容.常见的传输协议有以下几种:  ASCII:这是最快的传输协议,但只能传送文本文件.  Xmodem

用SecureCRT来上传和下载文件 rz sz

用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem.文件传输协议:文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的起止时间.错误的判断与纠正等内容.常见的传输协议有以下几种: ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古

linux(6/17)--文件打包上传和下载

tar命令 命令功能 用来压缩和解压文件 命令格式 tar[必要参数][选择参数][文件] tar打包工具 -f ##指定生成包的名字,建议 -f单独写成一个参数 --delete filename ##删除包中指定文件 --get filename ##取出包中指定文件 注: -c -t -x 不能出现在同一串命令行中 tar -cf etc.tar /etc ##生成归档包 tar -f etc.tar --get file tar -f etc.tar --delete file tar

【ABAP系列】SAP ABAP 实现FTP的文件上传与下载

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 实现FTP的文件上传与下载 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 在SAP的实际应用中,经常会需要将生成的文件上传到FTP,或从FTP下载相关文档数据.本例实现将本地指定文件上传到FTP,及从FTP下载文件到本地的功能. 从FTP复制文件共有两种方式,一种是直接复制文件,另