最近做项目碰到一问题就是在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的设置后,再运行,会弹出一个对话框,点击是就行了,这时你获得的上传路径即为全路径了。