Flex打开并浏览本地文件

项目需求:点击地图上某按钮,弹出相应CAD图以及jpg图片

功能设计:Flex中有FileReference的类可以对文件操作,实现上传、下载的功能,但是没有办法打开本地文件。

      只有在AIR桌面开发中有类似功能,在WEB端没有此api。

      研究后利用Flex调用JS成功实现功能。

实现原理:因资源布置在服务器上,所以采用点击时,调用后台(C#编写)将相应的dwg以及jpg下载到本地。

      再用JS打开轻量级dwg浏览工具”DWGView.exe“(CAD迷你看图)  

             以及windows自带的”windows图片和传真查看器“分别查看dwg以及jpg图。

运行环境:windows7+IE8+Flex4.0

源代码:

  调用JS方法(Flex端触发事件):

            1、dwg

    private function callExe():void
            {

      //调用callExe脚本,用”DWGView.exe“工具(缺省即为利用系统默认打开方式),打开D:下,名为1.dwg的数据
                ExternalInterface.call("callExe","DWGView.exe","D:////1.dwg");
            }

    2、jpg

    ExternalInterface.call("callExe","D:////"+fileName+".jpg");

  JS方法(写到项目”index.template.html“中):

        <script language="JavaScript" type="text/javascript">
                function callExe(shellp,str)
                {
                    try
                    {
                        var objShell=   new ActiveXObject("wscript.shell");
                        objShell.Run(shellp+" "+str);
                        objShell   =   null;
                    }  
                    catch(e)
                    {
                        alert('找不到文件"'+shellp+'"(或它的组件之一)。请确定路径和文件名是否正确,而且所需的库文件均可用。');
                    }
                }
     </script>

备注:操作时可能会遇到以下问题

   1、在下载dwg数据时,因为iis默认没有支持此类型。所以在iis的”MIME类型“中需要添加:文件扩展名”.dwg“,MIME类型:"application/x-autocad"

   2、调用JS失败时,需还将网站设置成可信网站,并启动”对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本“

 

 

posted @ 2013-03-19 10:29  苍龙de链  阅读(1030)  评论(0编辑  收藏  举报