FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 10113|回复: 7
打印 上一主题 下一主题

FileUpload在Chrome中的异常

[复制链接]
跳转到指定楼层
楼主
发表于 2012-4-6 16:35:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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");
复制代码
沙发
发表于 2012-4-7 21:25:31 | 只看该作者
有FileName属性
板凳
 楼主| 发表于 2012-4-7 23:59:19 | 只看该作者
本帖最后由 Landroid 于 2012-4-8 00:55 编辑
sanshi 发表于 2012-4-7 21:25
有FileName属性

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

在chrome下:

得到的FileName只是文件的名称
而在IE9下,


是文件的本地路径


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


IE9下正常,d:\Users\....





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

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

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

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

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

这个是浏览器的安全机制所致,和控件无关~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-6 00:22 , Processed in 0.059236 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表