Use Flex and JavaScript to get the full path of a local File

 

 参照FileReference路径获取问题 ,终于成功获取了本地文件路径。

使用ExternalInterface类来实现Flash和JavaScript的交互,从而获取本地文件的完全路径。

Flex程序代码:

<? xml version = " 1.0 "  encoding = " utf-8 " ?>
< mx:Application xmlns:mx = " http://www.adobe.com/2006/mxml "  layout = " absolute "  creationComplete = " Init() " >
    
< mx:TextInput x = " 114 "  y = " 139 "  id = " txtFileName " />
    
< mx:Button x = " 310 "  y = " 139 "  label = " Browse "  id = " btnBrowse "  click = " onBrowseClick(); " />
    
    
< mx:Script >
        
<! [CDATA[
            import flash.external.ExternalInterface;
            
            private 
function  Init(): void
            {
                ExternalInterface.addCallback(
" setValue " ,setTextValue);
            }
            
            private 
function  onBrowseClick(): void
            {
                ExternalInterface.call(
" browse " );                
            }
            
            private 
function  setTextValue(val:String): void
            {
                txtFileName.text
= val;
            }
        ]]
>
    
</ mx:Script >
</ mx:Application >

用这个代码编译后,再将由其生成的html文件打开在</object>前添加如下代码:

< input type = " File "  id = " myFile "  onchange = " giveValueToFlash(myFile.value) "  style = " visibility:hidden " />
< script language = " javascript " >
function  browse(){
    myFile.click();
}

function  giveValueToFlash(val){
    GetFilePath.setValue(val);
}
</ script >

最终的html文件为:

<!--  saved from url=(0014)about:internet  -->
< html  lang ="en" >
< head >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=utf-8"   />
< title ></ title >
< script  src ="AC_OETags.js"  language ="javascript" ></ script >
< style >
body 
{  margin :  0px ;  overflow : hidden  }
</ style >
< script  language ="JavaScript"  type ="text/javascript" >
<!--
//  -----------------------------------------------------------------------------
//
 Globals
//
 Major version of Flash required
var  requiredMajorVersion  =   9 ;
//  Minor version of Flash required
var  requiredMinorVersion  =   0 ;
//  Minor version of Flash required
var  requiredRevision  =   0 ;
//  -----------------------------------------------------------------------------
//
 -->
</ script >
</ head >

< body  scroll ="no" >
< script  language ="JavaScript"  type ="text/javascript"  src ="history.js" ></ script >
< script  language ="JavaScript"  type ="text/javascript" >
<!--
//  Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var  hasProductInstall  =  DetectFlashVer( 6 0 65 );

//  Version check based upon the values defined in globals
var  hasRequestedVersion  =  DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);


//  Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
if  ( hasProductInstall  &&   ! hasRequestedVersion ) {
    
//  MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
     //  This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
     //  DO NOT MODIFY THE FOLLOWING FOUR LINES
     //  Location visited after installation is complete if installation is required
     var  MMPlayerType  =  (isIE  ==   true ?   " ActiveX "  :  " PlugIn " ;
    
var  MMredirectURL  =  window.location;
    document.title 
=  document.title.slice( 0 47 +   "  - Flash Player Installation " ;
    
var  MMdoctitle  =  document.title;

    AC_FL_RunContent(
        
" src " " playerProductInstall " ,
        
" FlashVars " " MMredirectURL= " + MMredirectURL + ' &MMplayerType= ' + MMPlayerType + ' &MMdoctitle= ' + MMdoctitle + "" ,
        
" width " " 100% " ,
        
" height " " 100% " ,
        
" align " " middle " ,
        
" id " " GetFilePath " ,
        
" quality " " high " ,
        
" bgcolor " " #869ca7 " ,
        
" name " " GetFilePath " ,
        
" allowScriptAccess " , " sameDomain " ,
        
" type " " application/x-shockwave-flash " ,
        
" pluginspage " " http://www.adobe.com/go/getflashplayer "
    );
else   if  (hasRequestedVersion) {
    
//  if we've detected an acceptable version
     //  embed the Flash Content SWF when all tests are passed
    AC_FL_RunContent(
            
" src " " GetFilePath " ,
            
" width " " 100% " ,
            
" height " " 100% " ,
            
" align " " middle " ,
            
" id " " GetFilePath " ,
            
" quality " " high " ,
            
" bgcolor " " #869ca7 " ,
            
" name " " GetFilePath " ,
            
" flashvars " , ' historyUrl=history.htm%3F&lconid= '   +  lc_id  +   '' ,
            
" allowScriptAccess " , " sameDomain " ,
            
" type " " application/x-shockwave-flash " ,
            
" pluginspage " " http://www.adobe.com/go/getflashplayer "
    );
  } 
else  {   //  flash is too old or we can't detect the plugin
     var  alternateContent  =   ' Alternate HTML content should be placed here.  '
      
+   ' This content requires the Adobe Flash Player.  '
       
+   ' <a href=http://www.adobe.com/go/getflash/>Get Flash</a> ' ;
    document.write(alternateContent);  
//  insert non-flash content
  }
//  -->
</ script >
< noscript >
      
< object  classid ="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            id
="GetFilePath"  width ="100%"  height ="100%"
            codebase
="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" >
            
< param  name ="movie"  value ="GetFilePath.swf"   />
            
< param  name ="quality"  value ="high"   />
            
< param  name ="bgcolor"  value ="#869ca7"   />
            
< param  name ="allowScriptAccess"  value ="sameDomain"   />
            
< embed  src ="GetFilePath.swf"  quality ="high"  bgcolor ="#869ca7"
                width
="100%"  height ="100%"  name ="GetFilePath"  align ="middle"
                play
="true"
                loop
="false"
                quality
="high"
                allowScriptAccess
="sameDomain"
                type
="application/x-shockwave-flash"
                pluginspage
="http://www.adobe.com/go/getflashplayer" >
            
</ embed >
    
</ object >
</ noscript >
< iframe  name ="_history"  src ="history.htm"  frameborder ="0"  scrolling ="no"  width ="22"  height ="0" ></ iframe >
< input  type ="File"  id ="myFile"  onchange ="giveValueToFlash(myFile.value)"  style ="visibility:hidden" />
< script  language ="javascript" >
function  browse(){
    myFile.click();
}

function  giveValueToFlash(val){
    GetFilePath.setValue(val);
}
</ script >
</ body >
</ html >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值