如何在 asp.net 中使用 AJAX 文件上传来限制文件大小?

Posted

技术标签:

【中文标题】如何在 asp.net 中使用 AJAX 文件上传来限制文件大小?【英文标题】:how to Limit FileSize using AJAXFile Uploader in asp.net? 【发布时间】:2012-09-18 07:17:27 【问题描述】:

我有一个用于上传个人资料图片的 AJAX 文件上传器。我想限制用户仅上传最多 102400 字节的图像。文件大小超过时如何显示 javascript 错误消息。

代码:

protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
    
    string workerfile = Session["LoginUserID"].ToString();
            string strFileName = string.Empty;
            string strFileType = string.Empty;
            string path = string.Empty;
            var folder = Server.MapPath("../worker/Uploads/" + workerfile);
    if (!Directory.Exists(folder))
            
                Directory.CreateDirectory(folder);
                strFileName = DateTime.Now.ToString("MM-dd-yyyy_HHmmss");
                strFileType = System.IO.Path.GetExtension(e.FileName).ToString().ToLower();

                AjaxFileUpload1.SaveAs(Server.MapPath("../worker/Uploads/" + Session["LoginUserID"] + "/" + workerfile + "_img" + strFileType));
            
            else
            

                strFileName = DateTime.Now.ToString("MM-dd-yyyy_HHmmss");
                strFileType = System.IO.Path.GetExtension(e.FileName).ToString().ToLower();


                AjaxFileUpload1.SaveAs(Server.MapPath("../worker/Uploads/" + Session["LoginUserID"] + "/" + workerfile + "_img" + strFileType));

            

如何做任何想法? 帮助表示赞赏。

【问题讨论】:

【参考方案1】:

不幸的是,没有办法向客户端详细说明服务器端出了什么问题——也就是说,没有正式的方法可以这样做。这是另一种选择:

    使用 AjaxFileUploadEventArgs.FileSize 检查文件大小。如果它 超过你的最大值(看起来你可能试图限制为 1 MB,正确值为1048576),设置 AjaxFileUploadEventArgs.PostedUrl = "你的文件太大了,等等。"

    将控件上的 OnClientUploadComplete 属性设置为名称 一个JS函数,如果文件名将显示图像 字符串是这样格式化的,或者显示一个带有错误的窗口 消息。

这当然是一个 hack,但它会起作用。

【讨论】:

以上是关于如何在 asp.net 中使用 AJAX 文件上传来限制文件大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ajax在asp.net mvc中上传多个图像

如何使用 ajax 将文件上传到 asp.net mvc 控制器操作

在 asp.net 核心客户端中使用 ajax 上传文件类型

如何将带有附加数据的 FormData 文件发送到 asp.net web api ajax 调用

我可以在 asp.net(vb) 中自定义 ajax 文件上传吗?

如何使用asp.net核心在action方法中接收通过ajax请求发送的文件和整数