OAF doesn't readily expose the Controller Servlet's HttpRequest and HttpResponse objects so you need to extract it from the OAPageContext object via:

HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();

Once you get the response object you could already manipulate its OutputStream.

  1. public void downloadFile(OAPageContext pageContext) {
  2.  
  3. HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();
  4.  
  5. File fileToDownload = this.createFile();
  6.  
  7. String fileType = getMimeType("txt");
  8. response.setContentType(fileType);
  9. response.setContentLength((int) fileToDownload.length());
  10. response.setHeader("Content-Disposition", "attachment; filename=\"" + fileToDownload.getName() + "\"");
  11.  
  12. InputStream in = null;
  13. ServletOutputStream outs = null;
  14.  
  15. try {
  16.  
  17. outs = response.getOutputStream();
  18. in = new BufferedInputStream(new FileInputStream(fileToDownload));
  19. int ch;
  20.  
  21. while ((ch = in.read()) != -1) {
  22. outs.write(ch);
  23. }
  24.  
  25. } catch (IOException e) {
  26.  
  27. // TODO
  28. e.printStackTrace();
  29.  
  30. } finally {
  31.  
  32. try {
  33.  
  34. outs.flush();
  35. outs.close();
  36.  
  37. if (in != null) {
  38. in.close();
  39. }
  40.  
  41. } catch (Exception e) {
  42.  
  43. e.printStackTrace();
  44.  
  45. }
  46.  
  47. }
  48.  
  49. }

参考资料:

Integrate XML Publisher and OA Framework

Downloading Files in OAF (需翻墙)

XMLIntegrationCO

OAF 中下载使用XML Publisher下载PDF附件的更多相关文章

  1. 在页面和请求中分别使用XML Publisher生成PDF报表且自动上传至附件服务器

    两个技术要点: 1.使用TemplateHelper.processTemplate方法生成目标PDF的InputStream流,再使用ftp中上传流的方法将其上传至附件服务器. 2.在请求中调用AM ...

  2. 使用XML Publisher导出PDF报表

    生成XML数据源有两种方式. 一种是使用存储过程,返回一个clob作为xml数据源. 另一种是直接使用VO中的数据生成xml数据源. 方法一参考: Oracle XML Publisher技巧集锦 O ...

  3. 【资源】108个大数据文档PDF开放下载-整理后打包下载

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html        本博客其他.NET开源项目文章目录:h ...

  4. OAF与XML Publisher集成(转)

    原文地址:OAF与XML Publisher集成 有两种方式,一种是用VO与XML Publisher集成,另一种是用PL/SQL与XML Publisher集成 用VO与XML Publisher集 ...

  5. Http协议的断点续传下载器,使用观察者模式监视下载进度,使用xml保存下载进度。

    下载使用Http协议,为了做到断点续传,在点击暂停后,将已下载的大小等数据通过Json存入xml中,当继续传输的时候从xml文件中读取大小继续下载(好几个月前写的,真的想不起来了) bool CHtt ...

  6. JAVA中使用FTPClient上传下载

    Java中使用FTPClient上传下载 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在c ...

  7. iOS7 中的新加入的下载类NSURLSession(随ios版本更新而更新)

    想详细的了解网络下载的相关知识,要仔细阅读URL Loading System Programming Guide 这里有篇好文章(http://www.shinobicontrols.com/blo ...

  8. python中模块包的离线下载教程

    1.简介 当我们进行Python项目的迁移时(例如迁移到另外一台服务器上),如果该服务器要求离线安装, 往往需要我们将项目中的所需模块包进行离线操作. 2.教程 2.1 首先安装pip2pi模块,它可 ...

  9. Linux中从oracle官网下载jdk文件不是标准的gzip格式文件问题

    首先你要知道,在linux系统中,文件类型跟后缀名无关,后缀名只是为了方便识别,所以你下载的压缩包可能是tar.gz格式的,也有可能是tar.bz2或tar.xz格式,因为可能别人压缩之后不小心改错了 ...

随机推荐

  1. js将时间戳转化为日期格式

    function getLocalTime(nS) {        var date = new Date(nS);        var Y = date.getFullYear() + '-'; ...

  2. PHP多进程处理并行处理任务实例(转,备用)

    本文目的本文通过例子讲解linux环境下,使用php进行并发任务处理,以及如何通过pipe用于进程间的数据同步.PHP多进程通过pcntl_XXX系列函数使用多进程功能.注意:pcntl_XXX只能运 ...

  3. 实验二Java面向对象程序设计

    一.单元测试 了解三种代码: 1.伪代码:类似于自然语言说明,描述实现逻辑思维 2.产品代码:程序员编辑的开发代码,要求可修改.可移植 3.测试代码:我理解是相当于开发软件在软件开放之前,程序员找到b ...

  4. 20165211 学习基础和C语言调查

    20165211 学习基础和C语言调查 理论脱离实践是最大的不幸.--达芬奇 达芬奇,是我眼里最有嫌疑的穿越者. 绘画.天文.雕塑.音乐.发明.建筑,数学.生理.物理.天文.地质--我很难想象有一个人 ...

  5. Xcode基本设置系列和Xcode报错解决方案

    1, arc机制中调用非arc文件. Xcode——>Project->Build Phases,将需要非arc文件更改为:"-fno-objc-arc"   ,该参数 ...

  6. Python3基础 list 索引查看元素

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  7. ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze 最短路+分层图

    类似题解 There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v(1≤u, ...

  8. codeforces 1097 Hello 2019

    又回来了.. A - Gennady and a Card Game 好像没什么可说的了. #include<bits/stdc++.h> using namespace std; cha ...

  9. Linux下替换默认版本的protobuf

    1. 下载 下载地址,我下载的是protobuf-all-3.5.0.tar.gz,尽量下载all,里面包含protobuf库的所有文件. 2. 编译 ./configure make make in ...

  10. Wireshark无法解析OpenFlow配置协议 解决方法

    在使用wireshark对OpenFlow交换机与FlowVisor的通信过程进行抓包分析的时候,在其选项中有openflow_v1选项,但Wireshark竟无法解析OpenFlow协议. 在查阅相 ...