본문 바로가기
마루아라는 개발쟁이/ASP.NET

ASP.NET에서 웹 서버에 파일 업로드

by 마루아라 이야기 2022. 12. 6.

이 문서에서는 Visual C# .NET을 사용하여 웹 서버에 파일을 업로드하는 방법을 단계별로 설명합니다. 이 문서에서는 ASP.NET 파일(WebForm1.aspx) 및 해당 관련 코드 숨김 파일(WebForm1.aspx.cs)을 만들어서 Data라는 이름의 디렉터리에 파일을 업로드합니다.


ASP.NET 응용 프로그램 만들기


Microsoft Visual Studio .NET에서 새 응용 프로그램을 만들어서 웹 서버에 파일을 업로드하려면 다음과 같이 하십시오.

  1. Microsoft Visual Studio .NET을 시작합니다.

  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 누릅니다.

  3. 새 프로젝트 대화 상자의 프로젝트 형식에서 Visual C# 프로젝트를 누른 다음 템플릿에서 ASP.NET 웹 응용 프로그램을 누릅니다.

  4. 위치 상자에 URL을 입력하여 프로젝트를 만듭니다. 이 예에서 http://localhost/CSharpUpload 를 입력하면 CSharpUpload라는 기본 프로젝트 이름이  만들어집니다. WebForm1.aspx 파일이 Visual Studio .NET의 디자이너 보기에 로드됩니다.

 

Data 디렉터리 만들기

 

응용 프로그램을 만든 후에는 업로드한 파일을 저장할 Data 디렉터리를 만듭니다.
또한 이 디렉터리를 만든 후에 ASPNET 작업자 계정에 대해 쓰기 권한을 설정해야 합니다.

  1. Visual Studio .NET의 솔루션 탐색기 창에서 CSharpUpload를 마우스 오른쪽 단추로 누르고 추가를 누른 다음 새 폴더를 누릅니다. 기본적으로 NewFolder1이라는 이름의 폴더가 새로 만들어집니다.

  2. 폴더 이름을 Data로 바꾸려면 NewFolder1을 마우스 오른쪽 단추로 누르고 이름 바꾸기를 누른 다음 Data를 입력합니다.

  3. Windows 탐색기를 시작한 다음 2단계에서 만든 Data 파일 시스템 폴더를 찾습니다. 기본적으로 이 폴더는 아래 폴더에 있습니다.
    C:\Inetpub\wwwroot\CSharpUpload\Data

  4. 보안 설정을 변경하여 Data 디렉터리에 대한 쓰기 권한을 부여하려면 Data를 마우스 오른쪽 단추로 누른 다음 등록 정보를 누릅니다.

  5. Data 등록 정보 대화상자에서 보안 탭을 누른 다음 추가를 누릅니다.

  6. 사용자 또는 그룹을(를) 선택하십시오. 대화 상자에서 ASPNET계정을 누른 다음 추가를 누릅니다. 확인을 눌러 사용자 또는 그룹을(를) 선택하십시오. 대화 상자를 닫습니다.

  7. aspnet_wp account (computername\ASPNET) 계정을 누른 후 다음 사용권한에 대해 허용 확인란을 선택합니다.

    • 읽기 및 실행
    • 폴더 내용 보기
    • 읽기
    • 쓰기

    그 밖의 다른 허용 확인란과 거부 확인란은 모두 선택 취소합니다.

  8. 확인을 눌러 Data 등록 정보 대화 상자를 닫습니다. Data 디렉터리 사용 권한이 성공적으로 수정되어 사용자가 업로드한 파일이 저장됩니다.


WebForm1.aspx 페이지 수정

사용자가 파일을 업로드할 수 있도록 WebForm1.aspx 파일의 HTML 코드를 수정하려면 다음과 같이 하십시오.

  1. 앞에서 연 Visual Studio .NET의 인스턴스로 돌아옵니다. WebForm1.aspx가 디자이너 창에서 열립니다.

  2. WebForm1.aspx 페이지의 HTML 소스를 보려면 디자이너 창에서 WebForm1.aspx를 마우스 오른쪽 단추로 누른 다음 HTML 소스 보기를 누릅니다.

  3. <form> 태그가 포함되어 있는 다음 HTML 코드를 찾습니다.
    <form id="Form1" method="post" runat="server">
        
  4. 다음과 같이 <form> 태그에 enctype="multipart/form-data" 이름-값 특성을
    추가합니다.
    <form id="Form1" method="post"
                           enctype="multipart/form-data" runat="server">

        
  5. 여는 <form> 태그 뒤에 다음 코드를 추가합니다.
    <INPUT type=file id=File1 name=File1 runat="server" /><br>
    <input type="submit" id="Submit1" value="Upload" runat="server" />

  6. HTML <form> 태그가 다음과 같은지 확인합니다.
    <form id="Form1" method="post"
                   enctype="multipart/form-data" runat="server">
    <INPUT type=file id=File1 name=File1 runat="server" /><br>
    <input type="submit" id="Submit1" value="Upload" runat="server" /></form>

WebForm1.aspx.cs 코드 숨김 파일에 업로드 코드 추가

업로드한 데이터를 받아들이도록 WebForm1.aspx.cs 숨김 코드 파일을 수정하려면 다음과 같이 하십시오.

  1. Submit1 서브루틴이 다음과 같이 나타나는지 확인합니다.

    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
         if( ( File1.PostedFile != null )
                       && ( File1.PostedFile.ContentLength > 0 ) )
         {
            string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName);
            string SaveLocation = Server.MapPath("Data") + "\\" +  fn;
             try
               {
                File1.PostedFile.SaveAs(SaveLocation);
                Response.Write("The file has been uploaded.");
              }
              catch ( Exception ex )
              {
                Response.Write("Error: " + ex.Message);
              }
         }
         else
         {
             Response.Write("Please select a file to upload.");
         }

 

대용량 파일 업로드하기

 

ASP.NET Framework에서 HTTP Post 방식으로 파일을 업로드 할 수 있는 최대 크기는
기본적으로 4 MB입니다. 이는 악의적인 대용량 업로드로 인한 서버의 피해를 줄이고자 함입니다. 그 이상 크기의 파일을 업로드 하기 위해서는 machine.config (혹은, web.config) 파일에서 속성 값을 변경해주면 됩니다.

        <configuration>
	<system.web>
	      <httpRuntime 
		executionTimeout="90" 
		maxRequestLength="4096" 
		useFullyQualifiedRedirectUrl="false" 
		minFreeThreads="8" 
		minLocalRequestFreeThreads="4" 
		appRequestQueueLimit="100"/>
	</system.web>
         </configuration>
여기서 maxRequestLength가 바로 업로드 할 수 있는 파일의 크기를 말합니다.
maxRequestLength의 설정 값을 원하는 값으로 설정하면 됩니다.
Machine.config 파일은 C:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG 
디렉터리에 있습니다.

 

728x90
반응형
LIST