参照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 >
< 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 >
< 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 >
< 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 >