FileUpload读不到指定本地路径名,选择的本地路径中间被/fakepath/代替的解决方案,并实现文件类型筛选

在.NET 2.0和3.5中,FileUpload控件读取的本地路径会被/fakepath/替换。针对IE7和IE8浏览器,可以使用JavaScript来获取真实路径并存储在隐藏字段中。同时,文中提供了通过正则表达式验证文件类型的示例,确保用户只能选择.xml文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在.NET 2.0,或.NET3.5使用服务器控件或HTML控件FileUpload时,在读取路径名时,会发现路径名中间部分会被/fakepath/代替。如选择的C:/Documents and Settings/Shirley/桌面/dyangquan.xml,读取得到的是C:/fakepath/dyangquan.xml.这于IE7.0,IE8.0有关。

解决方案:

用javascript读取(如服务器端也要用到,则用一个hidden文本进行存储)

    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 isMozilla = /mozilla/.test( navigator.userAgent ) && !/(compatible|webkit)/.test( navigator.userAgent );
    var isOpera = /Opera/.test( navigator.userAgent );

//hidden文本

    var thehid=document.getElementById("hidthepath");
    if(isIE7 || isIE8){
       thehid.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='hidden')"
   }

function ReadPath()

{

 var thefile=document.getElementById("fileUpload");//读取fileUpload文件值
   var thepath=thefile.value;
            if(isIE7 || isIE8){//如果是E7 || isIE8
                thefile.select();
                var thepath=document.selection.createRange().text;
                document.selection.empty();
            }else if(isMozilla){
                thepath = thefile.files[0].getAsDataURL();
            }

    thehid.value=thepath;//放于hidden文件
        var strRegex = "(.xml|.XML)$"; //判断用户选择的文件是否为xml文件
        var re=new RegExp(strRegex);
        if (re.test(thepath))
        { 

         //验证成功

         }

        else

        { //验证不成功

        }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值