ASP.NET 프로젝트 강의실

시삽: 레드플러스 님 
게시판 이동:
 제목 : 파일업로드 연습(파일명 중복 처리) : UploadTest.aspx.cs
글번호: 218
작성자: 레드플러스
작성일: 2005/09/06 오전 9:38:04
조회수: 3674
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 Upload.Upload
{
    /// <summary>
    /// UploadTest에 대한 요약 설명입니다.
    /// </summary>
    public class UploadTest : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Button btnUpload;
        protected System.Web.UI.WebControls.Label lblDisplay;
        protected System.Web.UI.HtmlControls.HtmlInputFile fileUpload;
    
        private void Page_Load(object sender, System.EventArgs e)
        {
            // 여기에 사용자 코드를 배치하여 페이지를 초기화합니다.
        }

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

        }
        #endregion

        private void btnUpload_Click(object sender, System.EventArgs e)
        {
            //변수 선언
            string strFileName = "";
            int intFileSize = 0;
            string strBaseDir = //"c:\\Files\\";//NTFS쓰기권한
                Server.MapPath(".") + "\\Files\\";
            //넘겨져온 파일이 있다면
            if(fileUpload.PostedFile != null){
                //즉, 파일의 크기/파일명길이가 0보다 클때 업로드
                if(fileUpload.PostedFile.ContentLength > 0
                    &&
                    fileUpload.PostedFile.FileName.Trim().Length>0){
                    //[1] 파일명 구하기
                    strFileName =
                        System.IO.Path.GetFileName(
                            fileUpload.PostedFile.FileName);
                    //[2] 파일사이즈 구하기
                    intFileSize =
                        fileUpload.PostedFile.ContentLength;
                    //[3] 업로드(지정된 폴더)
                    Response.Write(strBaseDir + strFileName);

                    //fileUpload.PostedFile.SaveAs(
                    //    strBaseDir + strFileName);//저장...
                    
                    //파일명 중복 처리 후 저장
                    fileUpload.PostedFile.SaveAs(
                            GetUinqueFileNameWithPath(
                                strBaseDir, strFileName)
                    );

                    //파일 다운로드 링크 1
                    lblDisplay.Text =
                        String.Format("<a href='./Files/{0}'>{0}</a>"
                            , strFileName);

                    //강제 다운로드 링크 2
                    lblDisplay.Text +=  "<br />" +
                        String.Format(
                        "<a href='Down.aspx?FileName={0}'>{0}</a>"
                            , strFileName);

                }
            }

        }

        // 파일명 뒤에 번호 붙이는 메서드
        private string GetUinqueFileNameWithPath(
            string strBaseDirTemp, string strFileNameTemp)
        {
            int indexOfDot = strFileNameTemp.LastIndexOf(".");
            string strName = strFileNameTemp.Substring(0, indexOfDot);
            string strExt = strFileNameTemp.Substring(indexOfDot+1);

            bool blnExists = true;
            int i = 0;

            while(blnExists)
            {
                if(System.IO.File.Exists(strBaseDirTemp + strFileNameTemp))
                {
                    i++;
                    strFileNameTemp = strName + "(" + i + ")." + strExt;
                }
                else
                {
                    blnExists = false;
                }

            }
            return System.IO.Path.Combine(strBaseDirTemp, strFileNameTemp);
        }

    }
}
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 6. 답변형 게시판(ReplyCS, ReplyVB) - 레드플러스 2004-01-05 3490
  5. 자료실 게시판 작성 프로젝트(C#) - 레드플러스 2004-01-05 4117
  1. 자료실 게시판 테이블 구조 자료실게시판구조.jpg(69 KB) 레드플러스 2004-01-08 3345
  입력 Write.jpg(132 KB) 레드플러스 2005-03-10 2662
  출력 List.jpg(175 KB) 레드플러스 2005-03-10 2687
  상세 View.jpg(93 KB) 레드플러스 2005-03-10 2602
  수정 Modify.jpg(109 KB) 레드플러스 2005-03-10 2581
  삭제 Delete.jpg(45 KB) 레드플러스 2005-03-10 2576
  검색 Search.jpg(152 KB) 레드플러스 2005-03-10 2523
  공통 스타일 시트 : Upload.css - 레드플러스 2005-09-05 2647
  파일업로드 연습 : UploadTest.aspx UploadTest.aspx(1 KB) 레드플러스 2005-09-05 2753
  파일업로드 연습 : UploadTest.aspx.cs UploadTest.aspx.cs(2 KB) 레드플러스 2005-09-05 2920
현재글 파일업로드 연습(파일명 중복 처리) : UploadTest.aspx.cs - 레드플러스 2005-09-06 3674
  2. 입력 페이지 설계 - 레드플러스 2004-06-20 2590
  Write.aspx Write(1).aspx(6 KB) 레드플러스 2005-03-10 2768
  Write.aspx.cs Write.aspx(1).cs(6 KB) 레드플러스 2005-03-10 2589
  3. 출력 페이지 설계 - 레드플러스 2004-06-20 2596
  List.aspx List(3).aspx(3 KB) 레드플러스 2005-03-10 2917
  List.aspx.cs List.aspx(1).cs(2 KB) 레드플러스 2005-03-10 2578
  4. 세부 출력 페이지 설계 - 레드플러스 2004-06-20 2546
  View.aspx View(1).aspx(4 KB) 레드플러스 2005-03-10 6094
  View.aspx.cs View.aspx(1).cs(4 KB) 레드플러스 2005-03-10 2454
  5. 수정 페이지 설계 - 레드플러스 2004-06-20 2568
  Modify.aspx Modify(1).aspx(5 KB) 레드플러스 2005-03-10 2514
  Modify.aspx.cs Modify.aspx(1).cs(5 KB) 레드플러스 2005-03-10 2467
  6. 삭제 페이지 설계 - 레드플러스 2004-06-20 2411
  Delete.aspx Delete(1).aspx(1 KB) 레드플러스 2005-03-10 2447
  Delete.aspx.cs Delete.aspx(1).cs(3 KB) 레드플러스 2005-03-10 2467
  7. 검색 페이지 설계 - 레드플러스 2005-03-10 2404
  Search.aspx Search(1).aspx(2 KB) 레드플러스 2005-03-10 2500
  Search.aspx.cs Search.aspx(1).cs(2 KB) 레드플러스 2005-03-10 2381
  8. 강제 다운로드 페이지 구현 - 레드플러스 2005-03-10 2202
  Down.aspx.cs Down.aspx.cs(2 KB) 레드플러스 2005-03-10 2181
  자료실 게시판 프로젝트 소스 Upload.zip(60 KB) 레드플러스 2005-09-06 2104
다음글 4. 기본형 게시판 작성 프로젝트(C#) - 레드플러스 2004-01-04 3175
 
손님 사용자 Anonymous (손님)
로그인 Home