flexpaper组件中关于隐藏真实的swf 地址下载

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


[code="java"]


try
{
ServletOutputStream out = 
       this.getResponse().getOutputStream (); 

this.ismsdocversion = this.docversionsService
.getswfnamebydocumentId(documentId);

String realPath =ServletActionContext.getServletContext().getRealPath("swffiles")+"/"+this.ismsdocversion.getAttachmentflashname();
logger.info("swrealpath is"+realPath);
InputStream ips = null;
OutputStream ops = null;

 this.getResponse().reset();
this.getResponse().setContentType("application/swf");
File file = new File(realPath);
ops =  this.getResponse().getOutputStream();
ips = new FileInputStream(file);
this.getResponse().addHeader("Content-Length", new Long(file.length()).toString());
 
int i = 0;
byte[] buffer = new byte[1024];
i = ips.read(buffer);
while (i != -1) {
ops.write(buffer, 0, i);
i = ips.read(buffer);
}
 
ips.close();
ops.flush();
ops.close();
}
catch (Exception e)
{
e.printStackTrace();
}

[/code]


  然后在flexpaper中,指定为:
  SwfFile : escape('<%=basePath%>docview/docview!getSwffile.action?documentId=${ismsdocversion.documentId}'),
   其实就是指定为这个servlet输出,这样就可以达到不能直接下载SWF的目的了.
   另外,在网上发现一位北京兄弟搞的专门对flexpaper进行二次发开的
网站产品,功能比较强大,也受到这位兄弟的指点,特别感谢,
他的网站是:
  http://flexpaper.studylead.com/


支持的功能有:
  1、单页异步加载-速度奇快!!!
2、自定义在线播放器界面、可放上自己的公司Logo,或者换想要的皮肤。
3、word、ppt、excel、pdf、txt、wps等后台转换为swf功能。
4、可以使用OpenOffice和FlashPaper 两种方式转换 文件。
5、在线浏览文件格式:
MS Office文档: doc,docx ppt,pptx xls,xlsx vsd,vsdx pot,potx pps,ppsx rtf;
WPS office系列: wps et dps
图片: jpg png gif bmp
PDF: pdf
纯文本: txt
6、系统已经实现了关键字查询定位;可设置多个初始搜索关键字,以"|"分割,详见示例 关键字定位。
7、系统实现了控制文档显示页数,可用于收费文档使用,详见示例 控制文档显示页数。
8、系统实现了播放器加载广告,可用于文档添加广告使用,详见示例 播放器加载广告。
9、系统实现了播放器内按页插入广告,可自定义广告内容和插入位置;本站文档均添加了广告示例,请查看。
10、系统实现了全文检索,对文档建立索引,跟百度搜索类似,详见网站搜索。
   有兴趣的朋友可以看看

你可能感兴趣的:(flexpaper组件中关于隐藏真实的swf 地址下载)