이 섹션에서는 ASP.NET에서 웹 페이지에 파일을 업로드하는 데 사용되는 두 가지 방법을 설명합니다.
ASP.NET에는 사용자가 웹 서버에 파일을 업로드할 수 있는 두 개의 컨트롤이 포함되어 있습니다. 서버가 업로드된 파일 데이터를 수락하면 애플리케이션은 이를 저장하거나 검사하거나 무시할 수 있습니다. 다음 컨트롤은 파일 업로드를 허용합니다.
HtmlInputFile - HTML 서버 컨트롤
FileUpload - ASP.NET 웹 컨트롤
두 컨트롤 모두 파일 업로드를 허용하지만 FileUpload 컨트롤은 인코딩 형식을 자동으로 설정하는 반면 HtmlInputFile 컨트롤은 그렇지 않습니다.
이 자습서에서는 FileUpload 컨트롤을 사용합니다. 이 컨트롤을 사용하면 업로드할 선택한 파일을 미리 볼 수 있습니다. 미리보기 버튼과 파일 이름을 입력할 수 있는 텍스트 상자를 제공합니다.
사용자가 텍스트 상자에 파일 이름을 입력하거나 파일을 미리 보면 FileUpload 컨트롤의 SaveAs 메서드가 파일을 하드 디스크에 저장합니다.
FileUpload의 기본 구문은 다음과 같습니다.
<asp:FileUpload ID= "Uploader" runat = "server" />
FileUpload 클래스는 WebControl 클래스에서 파생되며 해당 요소를 모두 상속합니다. FileUpload 클래스에는 다음과 같은 읽기 전용 속성이 있습니다.
재산 | 설명하다 |
---|---|
파일바이트 | 업로드할 파일에 대한 바이트코드 세트를 반환합니다. |
파일콘텐츠 | 업로드할 파일의 스트림 객체를 반환합니다. |
파일 이름 | 업로드할 파일의 이름을 반환합니다. |
파일 있음 | 컨트롤에 업로드할 파일이 있는지 확인 |
게시된 파일 | 업로드된 파일에 대한 참조를 반환합니다. |
게시된 파일은 FileUpload 클래스의 PostedFile 속성을 통해 액세스할 수 있는 HttpPostedFile 형식의 개체에 캡슐화됩니다.
HttpPostedFile 클래스에는 일반적으로 사용되는 다음과 같은 속성이 있습니다.
재산 | 설명하다 |
---|---|
콘텐츠길이 | 업로드된 파일의 바이트 크기를 반환합니다. |
콘텐츠 유형 | 업로드된 파일의 MIME 유형을 반환합니다. |
파일 이름 | 파일의 전체 이름을 반환합니다. |
입력스트림 | 업로드할 파일의 스트림 객체를 반환합니다. |
다음 예제에서는 FileUpload 컨트롤과 해당 속성을 보여줍니다. 이 양식에는 FileUpload 컨트롤과 저장 버튼, 실제 파일 이름, 유형 및 길이가 포함된 레이블 컨트롤이 있습니다.
디자인 모드에서 테이블은 다음과 같습니다.
관련 파일 코드는 다음과 같습니다.
<body> <form id="form1" runat="server"> <div> <h3> File Upload:</h3> <br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <br /><br /> <asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" /> <br /><br /> <asp:Label ID="lblmessage" runat="server" /> </div> </form></body>
저장 버튼의 코드는 다음과 같습니다.
protected void btnsave_Click(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(); if (FileUpload1.HasFile) { try { sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName); //saving the file FileUpload1.SaveAs("<c:\SaveDirectory>" + FileUpload1.FileName); //Showing the file information sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName); sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType); sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength); sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName); }catch (Exception ex) { sb.Append("<br/> Error <br/>"); sb.AppendFormat("Unable to save file <br/> {0}", ex.Message); } } else { lblmessage.Text = sb.ToString(); }}
다음 문제에 주의하세요.
StringBuilder 클래스는 System.IO 네임스페이스에서 생성되므로 포함되어야 합니다.
try 및 catch 영역은 오류를 포착하고 오류 메시지를 표시하는 데 사용됩니다.