做在线预览办公文档时,遇到了使用flexpaper访问文件服务器swf不显示问题。
假想1:
swf文件有问题?
实验1:
直接访问swf文件在文件服务器的地址,浏览器可以正常访问,但是放在flexpaper插件中就无法显示。
实验2:
官网自带swf文件地址,可以显示。
实验3:
把文件服务器上的swf文件copy至本地,结果可以显示。
结论:文件没有问题。
假想2:不能访问外部服务器的文件?
上网查资料,说是跨域问题解决方案如下:
在远程服务器根目录下新建一个文件名为"crossdomain.xml"的文件,这是关于跨域策略文件
文件内容:
<?xml version="1.0"?>
<!-- http://www.aeroflash.org/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
淘宝的:http://www.taobao.com/crossdomain.xml
<?xml version="1.0" encoding="UTF-8"?> <cross-domain-policy> <allow-access-from domain="*.taobao.com" /> <allow-access-from domain="*.taobao.net" /> <allow-access-from domain="*.taobaocdn.com" /> <allow-access-from domain="*.allyes.com" /> </cross-domain-policy>
这样服务器上的文件就可以被任何域名来解析了,跨域策略文件可以根据自己的网络环境来设置,但是有些时候返回的内容特别慢,我在本机上测试花了四十秒左右的样子。
结果:一样显示不出来。
然后就一直查资料,终于在某个论坛看到了解决方案,还是网友给力啊
解决方案: 把flexpaper插件的FlexPaperViewer.swf文件放置在文件服务器可以访问的地方,然后在页面上引用外部服务器的这个文件
var file = "https://c4i-file001.citicsf.com:8001/Uploads/TempFolder/201711/10/3454d0b2-1115-483b-87e0-9458002cff62.swf"; var fp = new FlexPaperViewer( 'https://c4i-file001.citicsf.com:8001/FlexPaper/FlexPaperViewer', 'viewerPlaceHolder', { config : { SwfFile : escape(file), Scale : 0.6, ZoomTransition : 'easeOut', ZoomTime : 0.5, ZoomInterval : 0.2, FitPageOnLoad : true, FitWidthOnLoad : false, PrintEnabled : true, FullScreenAsMaxWindow : false, ProgressiveLoading : true, MinZoomSize : 0.2, MaxZoomSize : 5, SearchMatchAll : false, InitViewMode : 'Portrait', ViewModeToolsVisible : true, ZoomToolsVisible : true, NavToolsVisible : true, CursorToolsVisible : true, SearchToolsVisible : true, localeChain: 'zh_CN' } });
参考资源:
http://blog.csdn.net/yu452148611/article/details/46424381
http://blog.csdn.net/sinat_25926481/article/details/51924412
PDFViewer案例 链接: https://pan.baidu.com/s/1boEIdHX 密码: wncq