C#_ASP.NET

(C#, ASP.NET) 파일명 중복 체크, FileUpload

코딩ABC 2023. 4. 18. 08:13
반응형

파일 업로드에서 파일명이 중복된 경우 파일명을 ..(1), ..(2)와 같은 형태로 변경해서 중복되지 않도록 파일명을 변경합니다.
aa.c --> aa(1).c
aa.c --> aa(2).c

 

 

(2023-05-05 코드 수정)

using System.IO;
...


        public string DuplicateFile(string dir, string filename)
        {
            string file = Path.GetFileNameWithoutExtension(filename);
            string ext = Path.GetExtension(filename);
            string new_filename = filename;
            string temp_filename = String.Empty;

            int cnt = 1;
            while (File.Exists(new_filename))
            {
                temp_filename = String.Format("{0}({1})", file, cnt++);
                new_filename = Path.Combine(dir + "\\" + temp_filename + ext);
            }
            return temp_filename + ext;     // 파일명만 반환
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                string filename = FileUpload1.FileName;
                string file1 = Server.MapPath("/pub") + "\\" + filename;

                // 파일명 중복 체크
                if (File.Exists(file1))
                    filename = DuplicateFile(Server.MapPath("/pub"), file1);
                    
                file1 = Server.MapPath("/pub") + "\\" + filename;

                FileUpload1.SaveAs(file1);

                HyperLink1.NavigateUrl = "pub/" + filename;
                HyperLink1.Text = filename;

                ListBox1.Items.Clear();
                ListBox1.Items.Add("파일명:" + file1);
                ListBox1.Items.Add("파일명(filename):" + filename);
                ListBox1.Items.Add("파일크기:" +
                    FileUpload1.PostedFile.ContentLength);
                ListBox1.Items.Add("파일타입:" +
                    FileUpload1.PostedFile.ContentType);
            }
        }

 

 

반응형

 

 

파일업로드

 

업로드할 파일 선택

 

업로드 정보

 

업로드한 링크 클릭

 

 

반응형