上传文件的一个类

using System;
using System.IO; 
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls; 

namespace BLL
{
    
/// <summary> 
    
/// UpFile 的摘要说明。 
    
/// </summary> 
    public class UpFile
    {

        
#region 是否允许该扩展名上传IsAllowedExtension
        
///<summary> 
        
///是否允许该扩展名上传 
        
///</summary> 
        
///<param name = "hifile">FileUpload控件</param> 
        
///<returns>允许则返回true,否则返回false</returns> 
        public bool IsAllowedExtension(FileUpload hifile)
        {
            
string strOldFilePath = "";
            
string 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
        
/// <summary> 
        
/// 判断上传文件大小是否超过最大值 
        
/// </summary> 
        
/// <param name="hifile">FileUpload控件</param> 
        
/// <returns>超过最大值返回false,否则返回true.</returns> 
        public bool IsAllowedLength(FileUpload hifile)
        {
            
//允许上传文件大小的最大值,可以保存在xml文件中,单位为KB 
            int i = 20;
            
//如果上传文件的大小超过最大值,返回flase,否则返回true. 
            if (hifile.PostedFile.ContentLength > i * 1024)
            {
                
return false;
            }
            
return true;
        }
        
#endregion


        
#region 获取一个不重复的文件名GetUniqueString
        
/// <summary> 
        
/// 获取一个不重复的文件名 
        
/// </summary> 
        
/// <returns></returns> 
        public string GetUniqueString()
        {
            
//得到的文件名形如:20050922101010 
            return DateTime.Now.ToString("yyyyMMddhhmmss");
        }
        
#endregion



        
#region 删除指定文件DeleteFile
        
/// <summary> 
        
/// 删除指定文件 
        
/// </summary> 
        
/// <param name="strAbsolutePath">文件绝对路径</param> 
        
/// <param name="strFileName">文件名</param> 
        public 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 上传文件并返回文件名 SaveFile
        
/// <summary> 
        
/// 上传文件并返回文件名 
        
/// </summary> 
        
/// <param name="hifile">FileUpload控件</param> 
        
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用\符号亦可</param> 
        
/// <returns>返回的文件名即上传后的文件名</returns> 
        public string SaveFile(FileUpload 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
        
/// <summary> 
        
/// 重新上传文件,删除原有文件 
        
/// </summary> 
        
/// <param name="ffFile">FileUpload控件</param> 
        
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用\符号亦可</param> 
        
/// <param name="strOldFileName">旧文件名</param> 
        public void CoverFile(FileUpload 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


    } 

}

posted on 2007-08-24 10:25  kyovcs  阅读(185)  评论(0编辑  收藏  举报

导航