/********************************************** * 類作用: 上傳類 * 作者: 開優網絡 ***********************************************/ using System; using System.Web.UI.HtmlControls; using System.IO; namespace inputfiles { /// <summary> /// HtmlInputFileControl 的摘要說明。 /// </summary> public class HtmlInputFileControl { #region HtmlInputFileControl public HtmlInputFileControl() { } #endregion #region IsAllowedExtension是否允許該擴展名上傳 public static bool IsAllowedExtension(HtmlInputFile hifile) { string strOldFilePath = "",strExtension = ""; //允許上傳的擴展名,可以改成從配置文件中讀出 string[] arrExtension = { ".gif", ".GIF", ".JPG", ".jpg", ".JPEG", ".BMP", ".PNG", ".jpeg", ".bmp", ".png" }; if(hifile.PostedFile.FileName != string.Empty) { strOldFilePath = hifile.PostedFile.FileName; //取得上傳文件的擴展名 strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf(".")); //判斷該擴展名是否合法 for(int i = 0; i< arrExtension.Length; i++) { if(strExtension.Equals(arrExtension[i])) { return true; } } } return false; } #endregion #region IsAllowedLength判斷上傳文件大小是否超過最大值 public static bool IsAllowedLength(HtmlInputFile hifile) { //允許上傳文件大小的最大值,可以保存在xml文件中,單位為KB int i = 512; //如果上傳文件的大小超過最大值,返回flase,否則返回true. if(hifile.PostedFile.ContentLength > i * 512) { return false; } return true; } #endregion #region SaveFile上傳文件并返回文件名 public static string SaveFile(HtmlInputFile hifile,string strAbsolutePath) { string strOldFilePath = "",strExtension = "",strNewFileName = ""; if(hifile.PostedFile.FileName != string.Empty) { strOldFilePath = hifile.PostedFile.FileName; //取得上傳文件的擴展名 strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf(".")); //文件上傳后的命名 strNewFileName = GetUniqueString() + strExtension; if(strAbsolutePath.LastIndexOf("\\") == strAbsolutePath.Length) { hifile.PostedFile.SaveAs(strAbsolutePath + strNewFileName); } else { hifile.PostedFile.SaveAs(strAbsolutePath + "\\" + strNewFileName); } } return strNewFileName; } #endregion #region CoverFile重新上傳文件,刪除原有文件 public static void CoverFile(HtmlInputFile ffFile,string strAbsolutePath,string strOldFileName) { //獲得新文件名 string strNewFileName = GetUniqueString(); if(ffFile.PostedFile.FileName != string.Empty) { //舊圖片不為空時先刪除舊圖片 if(strOldFileName != string.Empty) { DeleteFile(strAbsolutePath,strOldFileName); } SaveFile(ffFile,strAbsolutePath); } } #endregion #region DeleteFile刪除指定文件 public static void DeleteFile(string strAbsolutePath, string strFileName) { if(strAbsolutePath.LastIndexOf("\\") == strAbsolutePath.Length) { if(File.Exists(strAbsolutePath + strFileName)) { File.Delete(strAbsolutePath + strFileName); } } else { if(File.Exists(strAbsolutePath + "\\" + strFileName)) { File.Delete(strAbsolutePath + "\\" + strFileName); } } } #endregion #region GetUniqueString獲取一個不重復的文件名 public static string GetUniqueString() { return DateTime.Now.ToString("yyyyMMddhhmmss"); } #endregion } }