FileUpload 檔案上傳
用 FileUpload 來作上傳檔案的動作並且可過濾上傳檔案類別
protected void FileUploadButton_Click(object sender, EventArgs e){ Boolean FileOK = false; string FilePath = "D:\\upload\\"; //設定上傳的路徑 //if (FileUploadField.HasFile) if(FileUploadField.FileName.Length > 0) { string fileExtension = System.IO.Path.GetExtension(FileUploadField.FileName).ToLower(); //如果副檔名有大寫則將他轉為小寫 string[] allowExtensions = { ".zip", ".rar", ".7z", ".doc", ".docx" }; //允許的檔案類型 for (int i = 0; i < allowExtensions.Length; i++) { if (fileExtension == allowExtensions[i]) { FileOK = true; } } } if (FileOK) { try { string tmpFileName = FileUploadField.FileName; string Date = DateTime.Now.ToString("MM-dd-hh-mm"); tmpFileName = Date + "_" + FileUploadField.FileName; FileUploadField.PostedFile.SaveAs(FilePath + tmpFileName); UploadedMessage.Text = "你所上傳的檔案為「" + FileUploadField.FileName + "」<br/>上傳成功"; } catch (Exception ex) { UploadedMessage.Text = "上傳失敗"; } } else { UploadedMessage.Text = "不允許此類型檔案的上傳"; }}補充 (感謝 ricoisme 的提醒)
我將允許檔案類型加上 .txt 來作測試
string[] allowExtensions = { ".zip", ".rar", ".7z", ".doc", ".docx", ".txt" }; //允許的檔案類型
這時上傳一個沒有內容的 .txt 文件會使得 HasFile 的判斷為 false ,檔案則無法上傳成功
所以將
if (FileUploadField.HasFile)
改為
if(FileUploadField.FileName.Length > 0)
這樣就沒有問題囉!不過我想正式應用的時候要多寫判斷,就是如果檔案的 Length 等於零的話,就顯示不允許上傳無內容檔案,畢竟上傳無內容的檔案好像沒有什麼好處阿。
參考資料:
HOW TO:以 FileUpload Web 伺服器控制項上載檔案
[ASP.NET][Tips]FileUpload.HasFile 屬性會檢查檔案內容
TAG: