原贴地址

http://jackyrong.iteye.com/blog/1768553

flexpaper是个不错的将pdf,word之类的文件转化为swf的开源工具,关于这个其实网上说了不少了,它做出来的效果有点象百度文库的效果了,但最近发现一个问题,就是在 
    SwfFile : escape("xxxx.swf"); 
这里,可能会造成很容易通过绝对路径下载到swf的地址,于是可以下载到swf,那么有什么好的方法保护之呢?当然,要搞到很复杂是不大可能的,除非有百度的能力,但简单的保护还是有办法的. 
办法就是,其实flexpaper的SwfFile是支持以文件流的方式读文件的,所以, 
可以简单写一个action或者servlet来读取,代码如下:

Java代码  
  1. try
  2. {
  3. ServletOutputStream out =
  4. this.getResponse().getOutputStream ();
  5. this.ismsdocversion = this.docversionsService
  6. .getswfnamebydocumentId(documentId);
  7. String realPath =ServletActionContext.getServletContext().getRealPath("swffiles")+"/"+this.ismsdocversion.getAttachmentflashname();
  8. logger.info("swrealpath is"+realPath);
  9. InputStream ips = null;
  10. OutputStream ops = null;
  11. this.getResponse().reset();
  12. this.getResponse().setContentType("application/swf");
  13. File file = new File(realPath);
  14. ops =  this.getResponse().getOutputStream();
  15. ips = new FileInputStream(file);
  16. this.getResponse().addHeader("Content-Length", new Long(file.length()).toString());
  17. int i = 0;
  18. byte[] buffer = new byte[1024];
  19. i = ips.read(buffer);
  20. while (i != -1) {
  21. ops.write(buffer, 0, i);
  22. i = ips.read(buffer);
  23. }
  24. ips.close();
  25. ops.flush();
  26. ops.close();
  27. }
  28. catch (Exception e)
  29. {
  30. e.printStackTrace();
  31. }

然后在flexpaper中,指定为: 
  SwfFile : escape('<%=basePath%>docview/docview!getSwffile.action?documentId=${ismsdocversion.documentId}'),

其实就是指定为这个servlet输出,这样就可以达到不能直接下载SWF的目的了.

flexpaper是不可以用绝对路径的调用本地或项目外的swf文件的,这个我们就有两种方法,一种是把swf和项目放在同一个目录下面,通过相对路径来获取

另一种是在运行项目的tomcat的server.xml配置里面host下添加一段内容

<Context crossContext="true" docBase="E:/SVPE/" path="/SVPE" reloadable="false"/>

function showFlash(url){
    $('#documentViewer').empty().FlexPaperViewer(
            { config : {
                SWFFile : escape(url),
                //SWFFile : file,
                jsDirectory : $basePath+'/FlexPaper/js/',
                Scale : 0.6,
                ZoomTransition : 'easeOut',
                ZoomTime : 0.5,
                ZoomInterval : 0.2,
                FitPageOnLoad : true,
                FitWidthOnLoad : true,
                FullScreenAsMaxWindow : false,
                ProgressiveLoading : false,
                MinZoomSize : 0.2,
                MaxZoomSize : 5,
                SearchMatchAll : false,
                InitViewMode : 'Portrait',
                RenderingOrder : 'flash,html',
                StartAtPage : '',
    
                ViewModeToolsVisible : true,
                ZoomToolsVisible : true,
                NavToolsVisible : true,
                CursorToolsVisible : true,
                SearchToolsVisible : true,
                WMode : 'window',
                localeChain: 'zh_CN'
            }}
    );
}

flexpaper流读取相关推荐

  1. idea 文件流读取web-inf下的文件_C#初学者教程系列20:Stream流读写

    本文是C#初学者简单教程,这是第20篇.感谢观看,记得关注我,后续还有更多教程文章,谢谢. 本文环境为Visual Studio 2019. 一.介绍 在C#文件操作中,通常使用流来读取和写入文件.流 ...

  2. java 文件流读取文本_如何在Java 8中处理流和读取文本文件

    java 文件流读取文本 我已经使用最新的Java8转换了一个旧的实用程序类. 我经常使用它来打印清单文件的内容,以检查任何神秘的jar文件的版本等.只需运行" java ztools.Pr ...

  3. C++中使用流读取数据 ifstream

    C++中使用流读取数据 ifstream https://www.cnblogs.com/hjj-fighting/p/10429178.html

  4. 字符流读取,乱码问题

    碰到问题,字符流读取文本文件,读取输出,强转成char出现乱码问题. 题目 用流统计文本文件的字符个数 public static int getSum() {int count = 0;Buffer ...

  5. 【转】为什么不能使用字符流读取非文本的二进制文件?

    读取文件 刚学Java的IO流部分时,书上说只能使用字节流去读取图片.视频等非文本二进制文件,不能使用字符流,否则文件会损坏.所以我就一直记住这一点了,但是为什么不能使用,这一直是我的一个疑惑.今天, ...

  6. IO流读取文件用户信息根据年龄排序后,写到文件

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java ...

  7. c++文件流读取一行_「软帝学院」Java挑战者专栏:IO流详解2

    软帝学院笔记Day18 IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符 ...

  8. Java中使用字符流读取UTF-8和写出txt文件 乱码 问题

    乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:

  9. Java File文件流读取文件夹内的文件并替换文件内容

    Java File文件流读取文件夹内的文件并替换文件内容 一.前言 二.代码 三.运行结果 一.前言 批量读取文件夹内的文件,并替换各个文件的内容 二.代码 新建一个普通 Java 项目就可以,创建文 ...

最新文章

  1. chcon命令 selinux 配置等
  2. Python报错:The truth value of an array with more than one element is ambiguous
  3. 【LOJ6033】棋盘游戏【二分图博弈】
  4. 【ElasticSearch】Es 源码之 PeerRecoverySourceService 源码解读
  5. SQL-92标准 中文翻译——定义、记号和约定 (记号)
  6. [Ext JS6]视图模型和数据绑定
  7. 判断zk是否挂掉_Zookeeper入门学习第一天,zk集群简单介绍
  8. windows下MySQL 5.7+ 解压缩版安装配置方法
  9. 仓库货位卡标识牌_仓库应如何规划?
  10. mac使用的文章合集 alfred利器
  11. Java 面试—乐/悲观锁,wait/notify/notifyAll对比
  12. python定时任务contrib_python定时任务的实现
  13. 业务知识 - 结构化思维
  14. 亚马逊云科技荣获2021中国公有云平台用户满意度第一
  15. git reset三种模式区别和使用场景(hard,soft,mixed)
  16. 优维科技低代码开发平台在券商系统的落地实践
  17. 手机号码界面输入数字查看手机信息
  18. android+下落+动画,完美起航-Android面试题之动画+事件处理篇
  19. landesk桌面管理服务器安装篇
  20. Java识别获取pdf中文字信息(此方法任意pdf的信息都可以拿到)

热门文章

  1. Python安装pip命令
  2. mysql视图有空间吗_MySQL视图
  3. 广西南宁机器人比赛_南宁举行机器人、创客竞赛,2000多名中小学生赛场大比拼...
  4. 删除所有学生记录mysql_【MySQL】MySQL基础操作语句
  5. RAID0、RAID1、RAID5、RAID6、RAID10、RAID50的异同与应用
  6. [EDA]8位双向移位寄存器的设计
  7. 三维数组-python
  8. js本地存储设置有效时长
  9. JQueryDOM之删除节点
  10. 如何将双系统变成单系统?