尝试上传文件aspx/C时出错#

Nav*_*eva 0 c# asp.net file-upload file

我有以下C#代码:

string File = "../images/main/profile-icon.png";
if (Request.ContentLength != 0)
{
    int Size = Request.Files[0].ContentLength / 1024;
    if (Size <= 512)
    {

        string LocalFile = Request.Files[0].FileName;
        int dot = LocalFile.LastIndexOf('.');
        string FileType = LocalFile.Substring(dot + 1);
        if (FileType == "gif" || FileType == "jpg" || FileType == "png" || FileType == "GIF" || FileType == "JPG" || FileType == "PNG")
        {
            int LastIndex = LocalFile.LastIndexOf(@"\") + 1;
             File = LocalFile.Substring(LastIndex, LocalFile.Length - LastIndex);
            File = DateTime.Today.ToString();
            string Path = Server.MapPath(" ../images/profiles") + "..\\" + File;
            Request.Files[0].SaveAs(Path);
        }
    }
    else
    {
        Response.Write("The file is too big !");
    }
}
else
{
    Response.Write("Unknown Error !");
}
Run Code Online (Sandbox Code Playgroud)

问题是在第三个代码行中我得到以下错误:

指数超出范围.必须是非负数且小于集合的大小.

这是HTML源代码的形式:

<form name="Register" runat="server" style="margin-top: 15px;" onsubmit="return validateProfile('Register');">
    <p>
       photo:
        <input type="file" name="File" style="margin-right:10px;" />
    </p>
</form>
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么以及如何解决这个问题?

希望得到帮助,谢谢!

Dim*_*rov 6

看来Files数组没有元素,也许你可以添加一个检查:

if(Request.Files.Count > 0)
{
   // continue here ...
}
Run Code Online (Sandbox Code Playgroud)

这可能意味着您没有正确上传文件,并且请求中缺少该文件.

编辑: 尝试enctype="multipart/form-data"在表单标签中设置.所以它会变成这样的东西:

<form name="Register" runat="server" style="margin-top: 15px;" onsubmit="return validateProfile('Register');" enctype="multipart/form-data">
Run Code Online (Sandbox Code Playgroud)