我们如何使用FileInfo控制图像的大小

时间:2015-04-28 15:38:18

标签: c# asp.net

我正在尝试控制图片大小不超过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";
    }
}

使用此代码我正在

  

错误是找不到文件

2 个答案:

答案 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只是有关可能的文件位置的信息,并不意味着存在)。

修正:

  • 在尝试保存之前使用FileUpload.FileBytes检查文件的长度
  • 首先保存文件,如果要使用FileInfo.Length,则检查长度。

如果200K是您网站上的最大上传大小,您还可以在Web.Config中限制最大请求大小,您也会收到非常不友好的错误消息,可能需要做额外的工作才能显示更好的内容。但它会通过上传大文件来保护您的代码免受潜在滥用。