ASP.NET 멀티 파일 저장하기
1. Introduction
서버 컨트롤로 간단하게 만들어진 예제이다. 개념적으로 정리 되어야 할 부분이 있다.
우리가 input type="file" 이 HtmlInputFile 컨트롤을 이용하여 멀티파일 페이지를 구현하고자 한다면
두개의 방법을 나누어 알아볼수 있다.
1. 파일 추가-->추가때마다 디스크에 저장-->모두 업로드
2. 파일 추가-->추가때마다 메모리에 저장-->모두 업로드
이렇게 파일로 저장해 놓고 파일 이름을 기억해 놓는방법 1번과 메모리에 저장하는 2번..
이렇게 2개의 방법이 있는것이다. 여기서 소개할 방법은 바로 2번의 방법을 사용하여 구
현한 폼을 보게 될 것이다. 웹application 성능상으로 보나 효율성으로 보나 추천하는 방법은
1번의 방법이다. 하지만 2번의 방법은 나름대로의 발상이 독특하다고 생각되어서 2번의
방법을 강좌로 택하게 되었다.
2. 준비하기
먼저 웹 IIS파일을 만들고 아래의 디자인처럼 컨트롤을 얹어보자.
- ListBox컨트롤 1개
- HtmlInputFile 1개
- Button 3개
- Label 1개
3. 주요 CODE 살펴보기
Step 1. 단일파일 메모리에 저장하기static public ArrayList hif = new ArrayList();//Static파일 생성
...
...
...
#region 2. 파일 추가하기
private void AddFile_Click(object sender, System.EventArgs e)
{
if (Page.IsPostBack == true)
{
//넘어온 파일 객체를 메모리에 저장해둔다.
hif.Add(FindFile);
ListBox1.Items.Add(FindFile.PostedFile.FileName);
}
}
#endregion
생성자 부분에 넘어온 HtmlInputFile 객체를 담아두는 ArrayList를 생성한다.
Step 2. 메모리의 파일 모두저장하기
#region 4. 파일을 모두 저장한다.
private void Button1_Click(object sender, System.EventArgs e)
{
string baseLocation = Request.MapPath("attachments\\");//저장 폴더
string status = "";//상태를 저장
//만약 파일이 없다면..
if(ListBox1.Items.Count == 0)
{
Label1.Text = "파일을 추가해주세요";
return;
}
else
{
foreach(System.Web.UI.HtmlControls.HtmlInputFile HIF in hif)
{
try
{
string fn =
System.IO.Path.GetFileName(HIF.PostedFile.FileName);
HIF.PostedFile.SaveAs(baseLocation + fn);
filesUploaded++;
status += fn + "
";
}
catch(Exception err)
{
Label1.Text = "파일을 저장하는데 에러가 발생하였습니다. " +
baseLocation + "
" + err.ToString();
return;
}
}
if(filesUploaded == hif.Count)
{
Label1.Text = "모두 " + filesUploaded + " 개의 파일이 업로드 되
습니다.
" + status;
}
hif.Clear();
ListBox1.Items.Clear();
}
}
#endregion
정리
앞서 소개한데로 멀티 파일을 저장하는데 결코 좋은 방법은 아니라는것을 말해 주고 싶다.하지만
이예제를 응용하여 객체를 저장하여 사용하는 방법을 다루고자 할때 좋은 예제가 될것이다.
작성자 : HOONS(박경훈) 이메일 : tajopkh@hanmail.net 홈페이지 : http://www.hoonsbara.com |
'asp.net' 카테고리의 다른 글
[펌] :: EditPlus 에서 C# 코딩하기 :: (0) | 2010.07.12 |
---|---|
[펌] 11. [ASP.NET]파일업로드의 구현 (0) | 2010.07.12 |
[펌] ASP.NET에서 크기 조정된 이미지 출력하기 - 코리아인터넷닷컴 (0) | 2010.07.12 |
[펌] DataGrid를 간단하게 Excel로 변환하기 (0) | 2010.07.12 |
asp.net 파일 업로드 (0) | 2010.07.12 |