ITPub博客

首页 > 应用开发 > Java > Java I/O实现OAF文件上传与下载

Java I/O实现OAF文件上传与下载

原创 Java 作者:tchen 时间:2011-10-06 14:22:23 0 删除 编辑

文件上传
   首先建立用于存放附件的临时视图对象(View Object),包含Blob类型的视图属性(View Attribute),建立页面包含messageFileUpload类型的Item,并创建页面的控制器。
   在控制器的processFormRequest中编写以下代码:
   try
   {
   OAViewObject vo = (OAViewObject)am.findViewObject("FileVO1");
   Row row = vo.getCurrentRow();
  
   String filePath = "/u01/demo10/demo10comn/temp/";
  
   BlobDomain blob = (BlobDomain)row.getAttribute("FileData");
   File f = new File(filePath + (String)row.getAttribute("FileName"));
   InputStream is = blob.getBinaryStream();
   FileOutputStream fos = new FileOutputStream(f);
  
   int size=blob.getBufferSize();
   byte[] buffer=new byte[size];
   int len;
  
   while((len=is.read(buffer)) != -1)
   {
   fos.write(buffer,0,len);
   }
   is.close();
   fos.flush();
   fos.close();
   }
   catch(IOException ex)
   {
   ex.printStackTrace();
   System.out.println(ex.getMessage());
   }
  
   文件下载
   这里要实现的功能是当单击附件链接时,能自动打开附件保存对话框,代码如下:
   try
   {
   OAViewObject vo = (OAViewObject)am.findViewObject("FileVO1");
   Row row = vo.getCurrentRow();
  
   BlobDomain blob = (BlobDomain)row.getAttribute("FileData");
   HttpServletResponse response = (HttpServletResponse)pageContext.getRenderingContext().getServletResponse();
   response.addHeader("Content-Disposition", "attachment;filename="+ (String)row.getAttribute("FileName"));
   response.setContentType("application/x-msdownload");
  
   InputStream is = blob.getBinaryStream();
   int size=blob.getBufferSize();
   byte[] buffer=new byte[size];
   int len;
  
   while((len=is.read(buffer)) != -1)
   {
   response.getOutputStream().write(buffer,0,len);
   }
   is.close();
   response.getOutputStream().flush();
   response.getOutputStream().close();
   }
   catch(IOException ex)
   {
   ex.printStackTrace();
   System.out.println(ex.getMessage());
   }

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/122642/viewspace-1055473/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-06-29

  • 博文量
    19
  • 访问量
    88887