当前位置: 代码迷 >> Web前端 >> firefox中文件下传控件不能获取全路径
  详细解决方案

firefox中文件下传控件不能获取全路径

热度:87   发布时间:2012-09-02 21:00:34.0
firefox中文件上传控件不能获取全路径

最近做项目碰到一问题就是在ie中文件上传控件能获取到文件全路径 ,而在firefox中却只能得到文件名的问题,以前没碰到过,网上查了下,说是firefox的高版本中(3.0以上)考虑到安全问题,并且说是在ie8上也一样。于是网上找来一相应的解决办法,注:以下代码完全是为了记录下相应的解决办法所做的学习笔记

?

		getFilePath: function (fileBrowser) { //fileBrowser 为一个file对象 
		        if (navigator.userAgent.indexOf("MSIE") != -1){fileBrowser.select(); return document.selection.createRange().text;  }
		        else if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Mozilla") != -1) return this.getFilePathWithFF(fileBrowser);  
		        else alert("Not IE or Firefox (userAgent=" + navigator.userAgent + ")");  
		    },  
		    getFilePathWithFF: function (fileBrowser) {  
		        try {  
		            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
		        } catch(e) {  
		            alert('由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ; [2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).');  
		            return;  
		        }  
		        var fileName = fileBrowser.val();  
		        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);  
		        try {  
		            // Back slashes for windows  
		            file.initWithPath(fileName.replace(/\//g, "\\\\"));  
		        } catch(e) {  
		            if (e.result != Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;  
		            alert("File '" + fileName + "' cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.");  
		            return;  
		        }  
		      
		        return file.path;  
		    }
设置好后:第一次运行 会弹出由于浏览器安全问题 请按照以下设置 [1] 地址栏输入 "about:config" ; [2] 右键 新建 -> 布尔值 ; [3] 输入 "signed.applets.codebase_principal_support" (忽略引号).'提示
根据提示,修改好firefox的设置后,再运行,会弹出一个对话框,点击是就行了,这时你获得的上传路径即为全路径了。

?

  相关解决方案