• IE8上传文件时javascript读取文件的本地路径的问题("C:fakepath")的解决方案


        <script type="text/javascript">
            function getPath(obj) {
                if (obj) {
                    if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
                        obj.select(); return document.selection.createRange().text;
                    }
                    else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
                        if (obj.files) {
                            return obj.files.item(0).getAsDataURL();
                        }
                        return obj.value;
                    }
                    return obj.value;
                }
            } 
    
            //以下即为完整客户端路径
            var filepath=getPath(document.getElementById("iptfileupload"));
        </script>


    第二种解决方案:
    
    
    <script type="text/javascript"> 
    //FX获取文件路径方法 
    function readFileFirefox(fileBrowser) { 
    try { 
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
    } 
    catch (e) { 
    alert('无法访问本地文件,由于浏览器安全设置。为了克服这一点,请按照下列步骤操作:(1)在地址栏输入"about:config";(2) 右键点击并选择 New->Boolean; (3) 输入"signed.applets.codebase_principal_support" (不含引号)作为一个新的首选项的名称;(4) 点击OK并试着重新加载文件'); 
    return; 
    } 
    var fileName=fileBrowser.value; //这一步就能得到客户端完整路径。下面的是否判断的太复杂,还有下面得到ie的也很复杂。 
    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; 
    } 
    if ( file.exists() == false ) { 
    alert("File '" + fileName + "' not found."); 
    return; 
    } 
    return file.path; 
    } 
    //根据不同浏览器获取路径 
    function getvl(){ 
    //判断浏览器 
    var Sys = {}; 
    var ua = navigator.userAgent.toLowerCase(); 
    var s; 
    (s = ua.match(/msie ([d.]+)/)) ? Sys.ie = s[1] : 
    (s = ua.match(/firefox/([d.]+)/)) ? Sys.firefox = s[1] : 
    (s = ua.match(/chrome/([d.]+)/)) ? Sys.chrome = s[1] : 
    (s = ua.match(/opera.([d.]+)/)) ? Sys.opera = s[1] : 
    (s = ua.match(/version/([d.]+).*safari/)) ? Sys.safari = s[1] : 0; 
    var file_url=""; 
    if(Sys.ie<="6.0"){ 
    //ie5.5,ie6.0 
    file_url = document.getElementById("file").value; 
    }else if(Sys.ie>="7.0"){ 
    //ie7,ie8 
    var file = document.getElementById("file"); 
    file.select(); 
    file_url = document.selection.createRange().text; 
    }else if(Sys.firefox){ 
    //fx 
    //file_url = document.getElementById("file").files[0].getAsDataURL();//获取的路径为FF识别的加密字符串
    file_url = readFileFirefox(document.getElementById("file")); 
    } 
    //alert(file_url); 
    document.getElementById("text").innerHTML="获取文件域完整路径为:"+file_url; 
    } 
    </script> 
    <h1>JS获取文件域完整路径的方法,兼容不同浏览器</h1> 
    <div id="text" style="color:#f00;"></div> 
    <input type="file" id="file" /> 
    <input name="" type="button" value="获取" onClick="getvl();">
    
    
    
    
    
  • 相关阅读:
    Java使用POS打印机(无驱)
    关于在安装MySQL时报错"本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止"的解决方法
    Eclipse使用Git教程
    Android studio使用git教程
    数组
    序列化对象
    对象的三个属性
    javascript权威指南笔记--javascript语言核心(六)
    javascript权威指南笔记--javascript语言核心(五)--getter和setter属性
    javascript权威指南笔记--javascript语言核心(四)
  • 原文地址:https://www.cnblogs.com/mandalaluo/p/4873486.html
Copyright © 2020-2023  润新知