做在线预览办公文档时,遇到了使用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>
这样服务器上的文件就可以被任何域名来解析了,跨域策略文件可以根据自己的网络环境来设置,但是有些时候返回的内容特别慢,我在本机上测试花了四十秒左右的样子。
结果:一样显示不出来。
然后就一直查资料,终于在某个论坛看到了解决方案,还是网友给力啊
解决方案:
把flexpaper插件的FlexPaperViewer.swf文件放置在文件服务器可以访问的地方,然后在页面上引用外部服务器的这个文件
var fp = new FlexPaperViewer(
'http://172.20.28.240:8088/web/YUCITMS/FlexPaperViewer',
'viewerPlaceHolder', { config : {
SwfFile : escape('${filePath}'),
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'
}});
</script>