0

ファイル アップロード コントロールのいずれかに有効な拡張機能が含まれていない場合、次のコードでファイルのアップロードを停止するにはどうすればよいですか? たとえば、最初のコントロールのファイルに有効な拡張子が含まれているが、2 番目のコントロールの拡張子が無効である場合、ファイルのアップロードを停止して操作を中断したいと考えています。

List<string> validExtensions = new List<string> { ".jpg", ".jpeg", ".png", ".stl" };        
for (int i = 0; i <= hfc.Count - 1; i++)
    {
        string guidResult = System.Guid.NewGuid().ToString();

        HttpPostedFile hpf = hfc[i];
        string extension = Path.GetExtension(hfc[i].FileName);
        if (hpf.ContentLength > 0)
        {
            if (!validExtensions.Contains(extension.ToLower()))
            {
                lblMsg.Text = "Extension not supported";

            }
            else
            {
                hpf.SaveAs(Server.MapPath("files\\") + guidResult.ToString() + extension);
                lblMsg.Text = "File(s) upload successsfuly.";
            }
        }
}
4

2 に答える 2

0

それらのいずれかを保存する前に、すべてを確認します。一例は次のとおりです。

List<string> validExtensions = new List<string> { ".jpg", ".jpeg", ".png", ".stl" };

if (hcf.PostedFiles.Any(x => !validExtensions.Contains(Path.GetExtension(x.FileName))))
{
     lblMsg.Text = "Extension not supported";
     return;
}    

//rest of your code here. which by the way, looks better like this:
foreach (var item in hcf.PostedFiles)
{
   string guidResult = System.Guid.NewGuid().ToString();
   item.SaveAs(Server.MapPath("files\\") + guidResult.ToString() + extension);
}
于 2013-08-01T20:36:22.880 に答える