咨询电话:186 7916 6165 咨询电话:186 7916 6165 (微信同号)    在线QQ:181796286
NEWS BLOG ·
学无止境
关注开优网络 关注前沿
ASP.NET公共类库之文件实用类FileUtil.cs
ASP.NET公共库之图片处理类ImageUtil.cs

ASP.NET公共类库之上传类HtmlInputFileControl.cs

发表日期:2015-09-06    文章编辑:南昌开优网络    浏览次数:3412    标签:ASP.NET应用

/**********************************************
 * 类作用:   上传类
 * 作者:   开优网络 
 ***********************************************/

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


	}
}