標籤:http os io 檔案 for art ar 代碼
自我感覺封裝得還不錯!!!
代碼如下:
C#代碼
- #region 上傳檔案的方法
- /// <summary>
- /// 上傳檔案方法
- /// </summary>
- /// <param name="myFileUpload">上傳控制項ID</param>
- /// <param name="allowExtensions">允許上傳的擴充檔案名稱類型,如:string[] allowExtensions = { ".doc", ".xls", ".ppt", ".jpg", ".gif" };</param>
- /// <param name="maxLength">允許上傳的最大大小,以M為單位</param>
- /// <param name="savePath">儲存檔案的目錄,注意是絕對路徑,如:Server.MapPath("~/upload/");</param>
- /// <param name="saveName">儲存的檔案名稱,如果是""則以原檔案名稱儲存</param>
- private void Upload(FileUpload myFileUpload, string[] allowExtensions, int maxLength, string savePath, string saveName)
- {
- // 檔案格式是否允許上傳
- bool fileAllow = false;
-
- //檢查是否有檔案案
- if (myFileUpload.HasFile)
- {
- // 檢查檔案大小, ContentLength擷取的是位元組,轉成M的時候要除以2次1024
- if (myFileUpload.PostedFile.ContentLength / 1024 / 1024 >= maxLength)
- {
- throw new Exception("只能上傳小於2M的檔案!");
- }
-
- //取得上傳檔案之擴充檔案名稱,並轉換成小寫字母
- string fileExtension = System.IO.Path.GetExtension(myFileUpload.FileName).ToLower();
- string tmp = ""; // 儲存允許上傳的檔案尾碼名
- //檢查擴充檔案名稱是否符合限定類型
- for (int i = 0; i < allowExtensions.Length; i++)
- {
- tmp += i == allowExtensions.Length - 1 ? allowExtensions[i] : allowExtensions[i] + ",";
- if (fileExtension == allowExtensions[i])
- {
- fileAllow = true;
- }
- }
-
- if (fileAllow)
- {
- try
- {
- string path = savePath + (saveName == "" ? myFileUpload.FileName : saveName);
- //隱藏檔到檔案夾
- myFileUpload.SaveAs(path);
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- else
- {
- throw new Exception("檔案格式不符,可以上傳的檔案格式為:" + tmp);
- }
- }
- else
- {
- throw new Exception("請選擇要上傳的檔案!");
- }
- }
- #endregion
以下是測試的代碼:
C#代碼
- try
- {
- string[] ss = { ".jpg", ".gif" };
- string path = Request.MapPath("~/upload/");
- Upload(FileUpload1, ss, 1, path, "");
- Label1.Text = "檔案上傳成功!";
- }
- catch (Exception ex)
- {
- Label1.Text = ex.Message;
- }
以前一直沒有認真的學習異常處理,今天弄了一下還發現異常處理還蠻好的。。。起碼代碼量上感覺比if..else..少。。。呵呵。。。