FineUI 官方论坛

标题: FileUpload在Chrome中的异常 [打印本页]

作者: Landroid    时间: 2012-4-6 16:35
标题: FileUpload在Chrome中的异常
本帖最后由 Landroid 于 2012-4-8 01:11 编辑

版本
ExtAspNet 3.1.2
chrome


问题描述
上传图片时,想对图片的大小进行限制,利用System.IO.FileInfo 的Length获取图片文件大小,但是在chrome中,FileUpload的FileName不包含完整路径,图片路径变为C:\fakepath\....,FileName的值只能取到XXX.png,IE9下正常

同时,在chrome浏览器中,点击保存按钮以后,即灰显,不可再次点击,消息弹出框不响应

测试截图见二楼

----------------------------------------------
参考dim_$lifthttp://bbs.extasp.net/forum.php?mod=viewthread&tid=372 中的代码,做了进一步完善
实现功能: 文件类型验证、文件大小限制、文件上传


首先,在web.config中添加上传文件大小配置字节,这里举例2M
  1.   <appSettings>
  2.     <add key="maxlength" value="2097152"/>
  3.   </appSettings>
复制代码
  1. <httpRuntime executionTimeout="3600" maxRequestLength="2097152"/>
复制代码
然后添加上传,限制图片类型为jpg,jpeg,png,gif,bmp,可以自己修改。
  1.     //文件上传
  2.     private void fileUpload(ExtAspNet.FileUpload file)
  3.     {
  4.         bool fileOK = false;
  5.         if (!string.IsNullOrEmpty(file.FileName))
  6.         {
  7.             string fileName = System.IO.Path.GetFileName(file.FileName);
  8.             string fileCode = DateTime.Now.Ticks.ToString();
  9.             
  10.             if (file.HasFile)
  11.             {
  12.                 String fileExtension = System.IO.Path.GetExtension(file.FileName).ToLower();//将指定字符串扩展名转换为小写
  13.                 String[] allowedExtensions = { ".jpg",".jpeg", ".png", ".gif",".bmp" };//允许的文件类型
  14.                 for (int i = 0; i < allowedExtensions.Length; i++)
  15.                 {
  16.                     if (fileExtension == allowedExtensions[i])
  17.                     {
  18.                         fileOK = true;
  19.                         break;
  20.                     }
  21.                 }
  22.                 try
  23.                 {
  24.                     //测试
  25.                     System.IO.FileInfo f = new System.IO.FileInfo("C:\\Users\\Administrator\\Desktop\\1.png");
复制代码

作者: sanshi    时间: 2012-4-7 21:25
有FileName属性
作者: Landroid    时间: 2012-4-7 23:59
本帖最后由 Landroid 于 2012-4-8 00:55 编辑
sanshi 发表于 2012-4-7 21:25
有FileName属性

之前一直是在用chrome做测试,这次在IE9下测试,发现:
FileUpload控件在不同浏览器下,获取到的FileName不同

在chrome下:
[attach]225[/attach]
得到的FileName只是文件的名称
而在IE9下,
[attach]226[/attach]

是文件的本地路径


同时,在chrome中下,button的click事件中ExtAspNet.Alert.ShowInTop(msg);也不会弹出,按钮不可点击同时,上传图片的路径也发生了变化,变成了c:\fakepath\.....
[attach]227[/attach]

IE9下正常,d:\Users\....
[attach]228[/attach]





作者: sanshi    时间: 2012-4-8 10:06
Landroid 发表于 2012-4-7 23:59
之前一直是在用chrome做测试,这次在IE9下测试,发现:
FileUpload控件在不同浏览器下,获取到的FileName ...

IE9和Chrome下获得的FileName属性不同是由浏览器造成的,这个无法改变。而你提到的Chrome下上传时出错则是ExtAspNet的一个BUG
作者: sanshi    时间: 2012-4-8 10:18
已经修正,ChangeSet:75887

-修正Chrome下上传文件出错的问题(渔夫子、Landroid)。
+为FileUpload控件增加ShortFileName属性,用来获取不包含路径的客户端文件名(Landroid)。
        -FileName得到的值在IE下为完成路径,在Chrome下为文件名。
                                
作者: Landroid    时间: 2012-4-8 11:09
sanshi 发表于 2012-4-8 10:18
已经修正,ChangeSet:75887

-修正Chrome下上传文件出错的问题(渔夫子、Landroid)。

原来是有 FileUpload1.PostedFile.ContentLength 这个的啊。。。我舍近求远了。。。
作者: awxtggg    时间: 2012-4-8 23:36
3.1.3版在chrome下,选择框里的文件名还是显示“c:\fakepath\aaa.xls”,很容易给用户误会。
还好,我这里可以让用户只使用IE8,但还是希望能修改一下这个问题。
作者: Landroid    时间: 2012-4-8 23:44
awxtggg 发表于 2012-4-8 23:36
3.1.3版在chrome下,选择框里的文件名还是显示“c:\fakepath\aaa.xls”,很容易给用户误会。
还好,我这里 ...

这个是浏览器的安全机制所致,和控件无关~~




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4