如何在 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 控制器操作
在 asp.net 核心客户端中使用 ajax 上传文件类型
如何将带有附加数据的 FormData 文件发送到 asp.net web api ajax 调用