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. 보기 메뉴에서 디자인을 누릅니다.

  2. Upload를 두 번 누릅니다. Visual Studio가 WebForm1.aspx.cs 코드 숨김 파일을 열고 자동으로 다음과 같은 메서드 코드를 생성합니다.

    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    }

  3. WebForm1.cs 파일의 클래스 수준에 다음과 같은 코드가 존재하는지 확인합니다.

    protected System.Web.UI.HtmlControls.HtmlInputFile File1;
    protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;


    이 코드가 파일에 없으면 다음 줄 뒤에 코드를 추가합니다.

    public class WebForm1 : System.Web.UI.Page
    {
    }

        
  4. 다음 코드를 찾습니다.

    private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    }

  5. Enter 키를 눌러 빈 줄을 삽입한 후 다음 코드를 추가합니다.

    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.");
    }

    이 코드는 파일이 업로드되었는지 가장 먼저 확인합니다. 파일을 선택하지 않은 경우에는 "Please select a file to upload" 메시지가 나타납니다. 올바른 파일을 업로드한 경우에는 System.IO 네임스페이스를 사용하면 파일 이름이 추출되고 대상이 SaveAs 경로에서 어셈블됩니다. 최종 대상을 알게 되면 File1.PostedFile.SaveAs 메서드를 사용하여 파일이 저장됩니다. 예외가 트래핑되면 예외 메시지가 화면에 표시됩니다.

  6. 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 
디렉터리에 있습니다.

+ Recent posts