日期:2014-05-18  浏览次数:20390 次

IE跟FireFox的不兼容太烦人了!在.cs中获取<input type='file' />的FileName得到不同的值!!!
我现在在一个页面中上传多张图片,对应不同的类别(如:位置图,平面图,图片数量可以根据客户的需要添加的, <input   type= 'file '   /> 是用js生成的),在页面提交之前我在js中把每个类别的 <input   type= 'file '   /> 的value赋值给一个隐藏控件以便在.cs中保存的时侯好区分,我在保存的时侯:
                string   fileName   =   。。。。;
                string   SoftDown   =   Request.Form[ "hidSoftDown "];
                HttpFileCollection   files   =   Request.Files;
                for   (int   i   =   0;   i   <   files.Count;   i++)
                {
                        string   oldFile   =   files[i].FileName.Trim();
                        if   (SoftDown.IndexOf(oldFile)   > =   0)
                        {
                            SoftDown   =   SoftDown.Replace( " <Path> "   +   oldFile   +   " </Path> ",   " <Path> "   +   fileName   +   " </Path> ");
                              。。。。。
但是结果是:
files[i].FileName在IE中它获取的值是:C:\AA\A.TXT
在firefox中它获取的值是:A.TXT,造成上面SoftDown的值没有被修改。。。
-----------------------------------
我该怎么办呢?或者对于我这种情况还有其他好的处理方式吗?

------解决方案--------------------
判断是哪种游览器,
if(window.ActiveXObject){
//IE
}else{
//其他浏览器
}
------解决方案--------------------
如果统一用IE就好咯
------解决方案--------------------
就统一支取文件名
try:

var file = Trow.cells[1].getElementsByTagName( "input ")[0].value;
var index = file.lastIndexOf( "\\ ");
if(index > 0)
file = file.substr(index+1);

str += " <File> <Path> " + file + " </Path> <Desc> "
+ Trim(row.cells[2].getElementsByTagName( "input ")[0].value) + " </Desc> <Order> "
+ order + " </Order> <Size> "
+ file + " </Size> </File> ";
------解决方案--------------------
同感两个浏览器各自不相同不兼容