제목 : 파일업로드 연습(파일명 중복 처리) : UploadTest.aspx.cs
글번호:
|
|
218
|
작성자:
|
|
레드플러스
|
작성일:
|
|
2005/09/06 오전 9:38:04
|
조회수:
|
|
4041
|
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);
}
}
}