none
如何驗證file類型? RRS feed

  • 問題

  • 請問...

    我用<input runat="server" id="upfile" type="file">要上傳圖片

    要如何在使用者選完檔案後,馬上判斷副檔名是否符合限定的副檔名呢??

    2006年6月3日 上午 06:27

解答

所有回覆

  • 要馬上判斷的話要寫 client 端 script ...

    在 onchange 事件檢查 upfile.value 的值

    2006年6月3日 上午 06:49
    版主
  • 可參考MSDN文件說明!如下

    protected void Page_Load(object sender, EventArgs e)
    {
        if(IsPostBack)
        {
            Boolean fileOK = false;
            String path = Server.MapPath("~/UploadedImages/");
            if (FileUpload1.HasFile)
            {
                String fileExtension =
                    System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
                String[] allowedExtensions =
                    {".gif", ".png", ".jpeg", ".jpg"};
              for (int i = 0; i < allowedExtensions.Length; i++)
              {
                   if (fileExtension == allowedExtensionsIdea)
                   {
                        fileOK = true;
                   }
              }
            }

            if (fileOK)
            {
                try
                {
                    FileUpload1.PostedFile.SaveAs(path
                        + FileUpload1.FileName);
                    Label1.Text = "File uploaded!";
                }
                catch (Exception ex)
                {
                    Label1.Text = "File could not be uploaded.";
                }
            }
            else
            {
                Label1.Text = "Cannot accept files of this type.";
            }
        }
    }

    2006年6月3日 下午 04:21
  • 璉大的說法是正確的,小安所提供的則是檔案上傳後的檢驗 ...
    2006年6月4日 下午 04:47
    版主
  • 請教各位大大,

    以前用vb6選擇檔案時可以直接限制副檔名 ,

    那 FileUpload 元件可以嗎 ?

    2006年6月5日 上午 12:25
  • 不行,目前並不行。

    為避免惡意網頁存取使用者電腦,目前 input type='file' 不允許與程式互動,ASP.NET 式包裝此物件,所以有相同的限制,內建並無延伸檔名過濾機制,所以只能從前述檔名過濾時處理。

    如果有需要此功能,需要自己開發 ActiveX 崁入 IE 處理。

    2006年6月5日 上午 12:57
    版主
  • 感謝你的回答...解決我想了老半天的問題...

    原來要用javascript去驗證喔...都沒想到說...=_="

    2006年6月5日 上午 01:35