c# - 自定义验证器不适用于文件上传大小 asp.net

标签 c# asp.net

我想在用户尝试上传大于 10 Mb 的文件时显示错误消息。这是我的验证器代码:

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="File size" ControlToValidate="attach" OnServerValidate="FileUploadCustomValidator_ServerValidate"></asp:CustomValidator>

这是 FileUploadCustomValidator_ServerValidate 的代码:

protected void FileUploadCustomValidator_ServerValidate(object sender, ServerValidateEventArgs e)
    {
        if (attach.HasFile)
        {
            if (attach.PostedFile.ContentLength > 10240)
            {
                e.IsValid = true;
            }
            else
            {
                e.IsValid = false;
            }
        }
    }

对于附件:

if (attach.HasFile)
            {
                attach.PostedFile.SaveAs(Server.MapPath("~/Data/") + attach.FileName);
                filename = attach.PostedFile.FileName.ToString();
                com.Parameters.AddWithValue("@attach", filename);
            }
            else
            {
                com.Parameters.AddWithValue("@attach", "");
            }

现在的问题是:它没有显示错误信息,也没有验证。哪里有问题。

最佳答案

我在您的代码中发现了两个问题。如果文件大小大于10MB,您希望验证失败,但只有当文件大小小于时,您的代码才会使验证失败10KB。这是你应该做的:

if (attach.PostedFile.ContentLength > 10485760) // 10MB = 10 * (2^20)
{
    e.IsValid = false;
}
else
{
    e.IsValid = true;
}

关于c# - 自定义验证器不适用于文件上传大小 asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44627901/

相关文章:

c# - 如何在 ASP.net Web 表单应用程序中处理 False/Empty 查询?

c# - 人员选取器控件在 asp.net mvc 应用程序中的实现

asp.net - 为什么在asp.net中使用自定义404页面时,不存在的页面为什么返回302状态

c# - 调用编译查询时如何修复 "System.InvalidOperationException: Invalid attempt to call Read when reader is closed"

c# - 无论设备时区如何,都获取特定时区的 DateTime.Now?

javascript - 将交替行样式应用于 TabContainers 中的 GridView 的更有效方法

javascript - 使用 Javascript 或 jQuery 检索 session 变量的简单快速的方法?

asp.net - 用于调试 VB 脚本代码的工具或 IDE

c# - 为什么我不能以这种方式实现接口(interface)?

c# - 使用 TFS api 执行(通过/失败)测试用例?