我正在尝试控制图片大小不超过200 KB
我该怎么做
假设我想从我的电脑上选择带有FileUpload的图片,并在上传图像之前检查尺寸。
string stream = FileUpload1.FileName;
string sub = stream.Substring(stream.LastIndexOf(".") + 1);
FileInfo fileinfo = new FileInfo(Server.MapPath(stream.ToString()));
if (FileUpload1.HasFile)
{
if (sub == "jpg" || sub == "jpeg" || sub == "png")
{
if ((fileinfo.Length / 1024) <= 200)
{
string path = Server.MapPath("~/Image/" + stream);
Image1.ImageUrl = path;
FileUpload1.SaveAs(path);
//Image1.DataBind();
Label1.Text = fileinfo.Length.ToString();
}
else
{
Label1.Text = "Please insert valid Image";
}
}
else
{
Label1.Text = "Please insert valid Image";
}
}
使用此代码我正在
错误是找不到文件
答案 0 :(得分:1)
使用FileUpload
,您可以使用以下内容进行验证:
在页面中:
<asp:FileUpload ID="myFile" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="myFile" ErrorMessage="File size should not be greater than 200 KB." OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
代码背后:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
if (myFile.FileBytes.Length > 204800)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
}
旁注:检查204800的大小,我认为是对的
答案 1 :(得分:0)
用户的更好选项是在发布前检查客户端大小 - 请参阅JavaScript file upload size validation
使用当前代码,您会收到错误,因为您在实际创建磁盘文件之前尝试检查磁盘上的文件大小(FileInfo
只是有关可能的文件位置的信息,并不意味着存在)。
修正:
FileInfo.Length
,则检查长度。如果200K是您网站上的最大上传大小,您还可以在Web.Config中限制最大请求大小,您也会收到非常不友好的错误消息,可能需要做额外的工作才能显示更好的内容。但它会通过上传大文件来保护您的代码免受潜在滥用。