Programming/.NET
FileUpload 는 서버에 파일을 업로드 하기 위한 컨트롤이며 아래 예제는 FileUpload 컨트롤을 사용해 어떻게 파일을 업로드 할 수 있는지를 보여줍니다.
<asp:FileUpload ID="FileUpload1" runat="server" /><br /><asp:Button ID="Button1" runat="server" Text="업로드" OnClick="Button1_Click" />
우선 파일을 업로드 하기 위해 당연히 FileUpload 컨트롤을 생성해야 합니다. 다만 FileUpload 는 자체적으로 Post 를 일으킬 수 없으므로 실제 업로드를 수행할 Button도 하나 필요하며 Button 에서의 이벤트를 통해 File을 원하는 위치에 업로드 하는 것입니다.
protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile) {
        FileUpload1.SaveAs(@"C:\Users\Administrator\Downloads\FILES\" + FileUpload1.FileName);
    }
}
파일을 선택하고 Button을 클릭하면 HasFile 속성을 통해 정말로 파일이 선택되었는지의 여부를 확인하고 파일이 있다면 SaveAs 메소드를 통해 해당 파일을 원하는 위치에 업로드합니다.

그런데 만약 한페이지에 여러개의 FileUpload 컨트롤이 존재하여 다수의 파일을 업로드 해야하는 상황이라면 다음과 같이 Request의 Files 속성으로 HttpFileCollection 개체를 받아 for 문으로 순환 처리해야 합니다.
사실은 굳이 이러한 순환처리를 하지 않아도 여러 FileUpload 컨트롤에 대한 업로드 처리를 각각 개별적으로 해도 됩니다만 다소 비효휼적일 수 있기에 다음과 같은 방법을 권장하는 것입니다.
protected void Button1_Click(object sender, EventArgs e)
{
    HttpFileCollection hfc = Request.Files;

    for (int i = 0; i < hfc.Count; i++) {
        HttpPostedFile hpf = hfc[i];

        if (hpf.ContentLength > 0) {
            hpf.SaveAs(@"C:\Users\Administrator\Downloads\FILES\" + hpf.FileName);
        }
    }
}
만약 실제 서버에서 파일업로드에 관한 작업을 수행하는 경우 업로드 가능 크기와 권한 이 두가지 사항을 고려하게 되는데 우선 사용자가 원하는 모든 크기의 파일을 서버에서 업로드할 수 있도록 처리하기에는 부담이 크므로 다음과 같이 Web.Config 파일을 수정하여 업로드 가능한 크기를 제한합니다.

<httpRuntime maxRequestLength="4096" executionTimeout="90" />

Web.Config 의 system.web 요소 하위에 httpRuntime 요소를 생성하고 maxRequestLength 속성으로 업로드를 허용할 크기를 설정합니다. 단위는 KB이며 4096 이라면 4MB정도의 파일크기를 의미합니다. 이때 executionTimeout 부분도 설정하여 파일을 업로드하기 위한 서버처리 수행시간을 같이 설정합니다.
 
4MB정도의 파일이라면 90초정도로도 넉넉하다고 판단되지만 만약 업로드 가능한 파일크기를 늘려야 한다면 executionTimeout 시간도 늘려서 TimeOut이 걸리지 않도록 조치해야 합니다.

권한과 관련된 부분에서는 파일업로드시 특정 폴더에 대한 적당한 권한을 부여하여 접근거부등의 오류가 나지 않도록 해야 합니다. 

이를 위해서 우선 파일이 업로드될 대상 폴더에 다음과 같이 권한을 지정합니다.

업로드될 대상 폴더를 선택하고 마우스 오른쪽 버튼으로 눌러 'Properties'을 선택한 다음 'Security' 탭으로 이동하십시오.


Edit 버튼을 눌러 Permission 대화상자를 열고


Add 버튼을 클릭합니다.


Select Users or Groups 대화상자의 입력창에서 IIS_IUSRS 를 입력하고 오른쪽 Check Names 를 클릭한 후 OK를 눌러 IIS_IUSRS 를 추가합니다.


추가된 권한에 대해 Write 권한을 체크하여 쓰기권한을 부여하고 OK를 누르면 권한부여가 마무리 됩니다.

 주요속성/이벤트

1. FileName

업로드 하려는 파일 이름을 확인합니다.

2. ContentLength

업로드 하려는 파일의 크기를 확인합니다. 단위는 kb 입니다.

3. ContentType

업로드 하려는 파일의 Type을 확인합니다. 예를 들어 이 속성의 결과값이 "image/jpg" 이거나 "image/jpeg"라면 업로드하려는 파일은 jpg 형식의 이미지파일입니다.

4. FileContent

이 속성을 이용하면 업로드 하려는 파일에 대해 Stream 개체를 생성할 수 있습니다.
Stream s = FileUpload1.FileContent;

'Programming > .NET' 카테고리의 다른 글

[ASP.NET] BulletedList  (0) 2014.01.23
[ASP.NET] 서버컨트롤 (Server Controls)  (0) 2014.01.21
[ASP.NET] FileUpload  (2) 2014.01.20
[ASP.NET] DropDownList  (0) 2014.01.16
[ASP.NET] XML (컨트롤)  (0) 2014.01.15
[ASP.NET] RadioButton  (0) 2014.01.14
2 0