using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace ezhanja.Testing.FileUpload
{
/// <summary>
/// WebForm1에 대한 요약 설명입니다.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
  protected System.Web.UI.HtmlControls.HtmlInputFile File1;
  protected System.Web.UI.WebControls.Label Label1;
  protected System.Web.UI.WebControls.Label Label2;
  protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 여기에 사용자 코드를 배치하여 페이지를 초기화합니다.
   Response.Write( Server.MapPath("\\저장위치") );
  }

  #region Web Form 디자이너에서 생성한 코드
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 이 호출은 ASP.NET Web Form 디자이너에 필요합니다.
   //
   InitializeComponent();
   base.OnInit(e);
  }
  /// <summary>
  /// 디자이너 지원에 필요한 메서드입니다.
  /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.
  /// </summary>
  private void InitializeComponent()
  {   
   this.Submit1.ServerClick += new System.EventHandler(this.Submit1_ServerClick);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void Submit1_ServerClick(object sender, System.EventArgs e)
  {
   if ( (this.File1.PostedFile !=null) && (this.File1.PostedFile.ContentLength > 0 ) )
   {    
    try
    {
string lastSaveName =  SaveFile(this.File1); 호출
     Response.Write("마지막저장:"+lastSaveName);
    }
    catch(System.Exception es){
     this.Label2.Text ="<br><b>"+es.ToString()+"</b>";    
    }   

   }
   else
   {
    this.Label1.Text ="업로드파일을 선택해주세요!";
   }
  }

  public string SaveFile(System.Web.UI.HtmlControls.HtmlInputFile hFile){
//Util.Util.saveDataPath는 파일이 저장되는 위치입니당.~
   //세이브
   string LastSaveName;
   //경로를 포함한 전체이름
    string totalFileName =  hFile.PostedFile.FileName;    
   //파일네임
    string realFileName = System.IO.Path.GetFileName(totalFileName);

   if(!CheckSameFile(realFileName))
   {
    //Response.Write("중복되는 이름없따 저장완료!!!");
    hFile.PostedFile.SaveAs( Util.Util.saveDataPath+realFileName );
    LastSaveName=realFileName;
   }
   else{    
    //파일확장명
    string fileExtension = System.IO.Path.GetExtension( realFileName );
    //확장명을 땐파일 네임 
    string fileNameWithoutExtension= System.IO.Path.GetFileNameWithoutExtension(realFileName);
    string TempRealFileName = realFileName; //확장자까지 붙어있는 파일네임 test.aspx
    //같은 파일네임이있다면 계속돌아주라
    int i=1;
    while( CheckSameFile(TempRealFileName) )
    {
     string TempFileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(realFileName);
     string TempFileExtension = System.IO.Path.GetExtension( TempRealFileName );
     TempRealFileName=TempFileNameWithoutExtension+"("+i+")"+TempFileExtension;
     i++;
    }

    //실질적인 저장
    hFile.PostedFile.SaveAs( Util.Util.saveDataPath+ TempRealFileName );
    LastSaveName = TempRealFileName;
   }  
   return LastSaveName;  
  }

  #region 같은 파일네임 체크
  /// <summary>
  /// 디렉토리에 같은 파일이 있는지를 체크합니다.
  /// 파일은 Util.Util.saveDataPath 에서 체크합니다.
  /// </summary>
  /// <returns>파일이있으면 true 없으면 false </returns>
  public bool CheckSameFile( string fileName)
  {

   if ( System.IO.File.Exists(Util.Util.saveDataPath+fileName) )
   {
    return true;
   }
   else{
    return false;
   }
  }

  /// <summary>
  /// 경로와 파일네임을 입력하면 파일이 있는지 없는지를 체크합니다
  /// </summary>
  /// <param name="filePath">파일디렉토리</param>
  /// <param name="fileName">검색하고자 하는 파일네임</param>
  /// <returns>파일이있으면 true 없으면 false </returns>
  public bool CheckSameFile(string filePath , string fileName){
   if ( System.IO.File.Exists(filePath+fileName) )
   {
    return true;
   }
   else
   {
    return false;
   }
  }

  #endregion
}

}

+ Recent posts