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/ 支持的功能有:   一、單頁異步加載-速度奇快!!! 二、自定義在線播放器界面、可放上本身的公司Logo,或者換想要的皮膚。 三、word、ppt、excel、pdf、txt、wps等後臺轉換爲swf功能。 四、可使用OpenOffice和FlashPaper 兩種方式轉換 文件。 五、在線瀏覽文件格式: 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 六、系統已經實現了關鍵字查詢定位;可設置多個初始搜索關鍵字,以"|"分割,詳見示例 關鍵字定位。 七、系統實現了控制文檔顯示頁數,可用於收費文檔使用,詳見示例 控制文檔顯示頁數。 八、系統實現了播放器加載廣告,可用於文檔添加廣告使用,詳見示例 播放器加載廣告。 九、系統實現了播放器內按頁插入廣告,可自定義廣告內容和插入位置;本站文檔均添加了廣告示例,請查看。 十、系統實現了全文檢索,對文檔創建索引,跟百度搜索相似,詳見網站搜索。    有興趣的朋友能夠看看
相關文章
相關標籤/搜索