using System.Web.UI.HtmlControls;
using System.IO;
namespace Document.Bll{
public class HtmlInputFileControl
{
#region HtmlInputFileControl
public HtmlInputFileControl()
{
}
#endregion
#region IsAllowedExtension是否允許該擴展名上傳
public static bool IsAllowedExtension(HtmlInputFile hifile)
{
string strOldFilePath = "",strExtension = "";
//允許上傳的擴展名,可以改成從配置文件中讀出
string[] arrExtension = {".gif",".jpg",".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 = 20;
//如果上傳文件的大小超過最大值,返回flase,否則返回true.
if(hifile.PostedFile.ContentLength > i * 1024)
{
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獲取一個不重復(fù)的文件名
public static string GetUniqueString()
{
return DateTime.Now.ToString("yyyyMMddhhmmss");
}
#endregion
}
}
