-2

我正在尝试上传多个带有过滤扩展名的文件。即使我提供了正确的文件,我也无法上传文件。请帮我解决问题。

HttpFileCollection hfc = Request.Files;

    for (int i = 0; i <= hfc.Count - 1; i++)
    {
        HttpPostedFile hpf = hfc[i];
        string sFileExt1 = Path.GetExtension(hfc[i].FileName);
        if (hpf.ContentLength > 0)
        {
            if (sFileExt1 != ".jpg" || sFileExt1 != ".jpeg")
            {
                //lblMsg.Text = "Extension not supported";
                lblMsg.Text = sFileExt1.ToString();
                break;
            }
            else
            {
                hpf.SaveAs(Server.MapPath("Special_Requests\\") + Path.GetFileName(hpf.FileName));
                iUploadedCnt += 1;
                lblMsg.Text = "File(s) upload successsfuly.";
            }
        }
    }

啊哈

4

1 回答 1

3

您的扩展名不能同时是 .jpg 和 .jpeg。基本上,如果扩展名不是 .jpg 或扩展名不是 .jpeg,您会说失败。所以 File.jpeg 将导致一个真实的条件(扩展名!= jpg),File.jpg(扩展名!= jpeg)也是如此

尝试If(sFileExt1 != ".jpg" && sFileExt1 != ".jpeg")

更好的解决方案

正如评论中所指出的,我认为更好的解决方案如下(未经测试):

List<string> validExtensions = new List<string> {".jpg", ".jpeg", ".png" };
if (validExtensions.Contains(sFileExt1.ToLower()))
{
    hpf.SaveAs(Server.MapPath("Special_Requests\\") + Path.GetFileName(hpf.FileName));
    iUploadedCnt += 1;
    lblMsg.Text = "File(s) upload successfully.";        
}
else
{
    //lblMsg.Text = "Extension not supported";
    lblMsg.Text = sFileExt1;
    break;
}
于 2013-08-01T16:44:24.257 回答