zoukankan      html  css  js  c++  java
  • action中通过javascript获取jsp页面中的文件上传路径

    下面的方法在ie和firefox下验证通过

    方法1:通过JS获取文件上传路径

      最近在写个小网站,用到了 fileupload 控件来上传文件。因为程序的某些需要,要获取上传文件的本地路径,在 CS 代码中使用的是 fileupload1.PostedFile.FileName ,结果发现得出来的只是文件名,不包含路径,记得以前确实是用这样的方法取得过路径的。

          于是上网搜索了下,原来是因为高版本的浏览器设定为了安全起见,已经不会显示文件路径。只有想办法用 JS 来获取路径了,测试了一下后发现。单独只是使用 document.getElementById("fileupload1").value ,在 IE6 里可以获取全路径,在 IE7,IE8 及火狐里都是只能获得文件名。

          后来在网上找到了解决办法, IE7,IE8 可以用如下代码获取文件路径

    程序代码:

        // 判断浏览器类型

        var isIE = (document.all) ? true : false;

        var isIE7 = isIE && (navigator.userAgent.indexOf('MSIE 7.0') != -1);

        var isIE8 = isIE && (navigator.userAgent.indexOf('MSIE 8.0') != -1);

        var file=document.getElementById("fileupload1");

        if(isIE7 || isIE8)

        {

            file.select();

            var path=document.selection.createRange().text;

            document.selection.empty();

        }

           但是在火狐下还是没办法获取文件路径,看到网上有人说用 getAsDataURL() 方法可以获取路径。我测试了一下,用这个方法确实是可以获得路径,但是些路径是被加密过的。于是继续寻找其他方法。。。

          火狐下获取上传文件路径的方法,需要先修改设置。在地址栏输入 about:config ,然后修改 signed.applets.codebase_principal_support 的键值,将值修改为 true 。然后再使用如下代码,就可以获得文件路径。

    程序代码 程序代码

    try {

            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

        }

        catch (e) {

            alert(' 请更改浏览器设置 ');

            return;

        }

        var fname = document.getElementById("fileupload1").value;

        var file = Components.classes["@mozilla.org/file/local;1"]

            .createInstance(Components.interfaces.nsILocalFile);

        try {

            // Back slashes for windows

            file.initWithPath( fname.replace(/\//g, "\\\\") );

      //我是在linux下开发所以这里要稍微修改一下,改为:

      //file.initWithPath(fname.replace(/\//g, "/"));

        }

        catch(e) {

            if (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;

            alert(' 无法加载文件 ');

            return;

        }

        alert(file.path); // 取得文件路径

        运行以上代码时,浏览器会弹出警告,选择”是“之后,即可获得路径。

    文章出处:DIY部落(http://www.diybl.com/course/4_webprogram/jsp/jsp_js/20091130/183825.html)

    文章来源:通过JS获取文件上传路径  (http://hi.baidu.com/xtxycy/item/5c6a9dfd801b8315fe358298

    方法2: http://www.cesclub.com/bw/jishuzhongxin/Webjishu/2011/1129/16284.html(没有测试)

    参考:http://liuzidong.iteye.com/blog/1463590

  • 相关阅读:
    Linux安装gitlab
    logback日志配置
    spring源码-aop动态代理-5.3
    【转】阿里云免费SSL证书申请与安装使用(IIS7)
    WebApi 全局使用filter
    Mint-UI Picker 三级联动
    P标签莫名有了margin-top值的原因
    Vue为v-html中标签添加CSS样式
    【转】C# string数组转int数组
    【转】SQLServer汉字转全拼音函数
  • 原文地址:https://www.cnblogs.com/lpshou/p/2861806.html
Copyright © 2011-2022 走看看