如何使用AjaxControlToolKit AjaxFileUpload(v18.1.1)允许无扩展名文件上传?
解决AjaxControlToolKit AjaxFileUpload(v18.1.1)允许无扩展名文件上传的问题
我之前也碰到过这个情况,针对你使用的v18.1.1版本,有两种靠谱的解决办法,你可以根据自己的需求选:
方法一:通过web.config配置快速实现
AjaxFileUpload的扩展名白名单默认是不包含无扩展名文件的,我们只需要在web.config的<appSettings>节点里调整配置,把空扩展名的情况加入允许列表即可。
具体配置代码如下:
<configuration> <appSettings> <!-- 这里保留你原本需要允许的扩展名,首尾加上|来允许无扩展名文件 --> <add key="AjaxControlToolKit.AjaxFileUpload.AllowedFileTypes" value="|.pdf|.doc|.docx|.jpg|" /> </appSettings> </configuration>
这里的关键是首尾的|——当文件没有扩展名时,控件会将空字符串与列表中的空条目匹配,从而允许上传。如果想允许所有文件(包括无扩展名的),直接把值设为*即可:
<add key="AjaxControlToolKit.AjaxFileUpload.AllowedFileTypes" value="*" />
配置修改后记得重启你的应用程序,让设置生效。
方法二:自定义控件实现更灵活的验证逻辑
如果配置方式满足不了你的需求(比如需要额外的自定义验证规则),可以继承原AjaxFileUpload控件,重写扩展名验证方法:
using AjaxControlToolkit; public class CustomAjaxFileUpload : AjaxFileUpload { protected override bool IsValidFileExtension(string fileName) { // 获取文件扩展名(无扩展名时返回空字符串) var fileExtension = System.IO.Path.GetExtension(fileName); // 如果文件没有扩展名,直接允许上传 if (string.IsNullOrEmpty(fileExtension)) { return true; } // 其他情况沿用原控件的验证逻辑 return base.IsValidFileExtension(fileName); } }
写完这个自定义控件后,在你的ASPX页面中注册并使用它即可,替换原来的AjaxFileUpload标签。
内容的提问来源于stack exchange,提问作者Dude
相关产品推荐
相关产品推荐

