파일 업로드/다운로드

BANANA.Web.File 클래스에서 파일을 업로드하고 다운로드할 수 있는 기능을 제공합니다.
파일 업로드 및 다운로드 기능을 제대로 이용하기 위해서는 web.config에 몇 가지 작업을 해 줄 필요가 있습니다.
<?xml version="1.0" encoding="utf-8"?>

<!--
  ASP.NET 응용 프로그램을 구성하는 방법에 대한 자세한 내용을 보려면
  http://go.microsoft.com/fwlink/?LinkId=169433 을 방문하십시오.
  -->
<configuration>
	<configSections>
		<section name="BANANA" type="BANANA.Common.WebConfiguration, BANANA.Common"/>
	</configSections>
	<BANANA>
		<fileUpload uploadDirectory="/Storage/" allowedFileTypes="txt, gif, jpg, jpeg, png, ppt, xls, doc, pptx, xlsx, docx, pdf, hwp, zip" />
	</BANANA>
</configuration>


파일 업로드 및 다운로드 함수는 총 4가지가 있습니다.
/// <summary>
/// 파일 업로드
/// </summary>
/// <param name="FileUploadControl">ASP.NET 파일 업로드 컨트롤</param>
public static void Upload(FileUpload FileUploadControl)
{
	// 파일 업로드 컨트롤만을 전달할 경우에는 web.config에 있는 uploadDirectory 경로로 파일을 업로드 합니다.
}


/// <summary>
/// 파일 업로드
/// </summary>
/// <param name="FileUploadControl">ASP.NET 파일 업로드 컨트롤</param>
/// <param name="LogicalUploadPath">파일을 업로드할 가상 경로</param>
public static void Upload(FileUpload FileUploadControl, string LogicalUploadPath)
{
	// web.config에 있는 업로드 경로가 아닌, 다른 경로로 파일을 업로드 하고 싶을 때에는 별도로 지정해 주세요.
}


/// <summary>
/// 파일 다운로드
/// </summary>
/// <param name="LogicalFileFullName">다운로드할 파일이 있는 가상 경로를 포함한 파일명</param>
public static void Download(string LogicalFileFullName)
{
	// 파일을 다운로드 할때에는 파일명을 포함한 전체 경로를 입력해 주시면 됩니다.
	// 이때에는 "D:\Storage\test.xls" 등과 같이 실제 경로를 입력하시면 안 됩니다.
	// "/Storage/test.xls"와 같이 가상 경로를 입력하세요.
}


/// <summary>
/// 파일 다운로드
/// </summary>
/// <param name="LogicalDownloadPath">다운로드할 파일이 있는 가상 경로</param>
/// <param name="FileName">다운로드할 파일명</param>
public static void Download(string LogicalDownloadPath, string FileName)
{
	// 다운로드할 경로와 파일명을 별도로 지정해 주셔도 다운로드가 가능합니다.
}


파일 업로드 시에는 아래의 기능들을 제공합니다.
1) 업로드 허용 파일형식인지 확인
2) 유일한 파일명으로 변환(년월일시분초밀리초)
3) 파일이 저장된 가상 경로 제공
4) 파일이 저장된 실제 경로 제공
5) 원본 파일명 제공
6) 업로드된 파일명(유일한 파일명) 제공
7) 업로드된 파일의 사이즈 제공(byte)
자, 그럼 ASP.NET에서 제공하는 기본 파일업로드 컨트롤을 이용하여 파일을 업로드하는 샘플 코드를 보겠습니다.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUpload.aspx.cs" Inherits="BANANA.Web.Framework.Test.FileUpload" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
	<title>파일업로드 테스트</title>
</head>
<body>
	<form id="form1" runat="server">
	<div><asp:FileUpload ID="FileUpload1" runat="server" /><asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="파일 업로드" /></div>
	</form>
</body>
</html>
화면은 아래와 같이 보일겁니다. ASP.NET에서 기본적으로 제공하는 파일 업로드 컨트롤과 버튼입니다.


C# 소스를 보실까요?
protected void Button1_Click(object sender, EventArgs e)
{
	try
	{
		// 파일을 업로드합니다.
		BANANA.Web.File.Upload(this.FileUpload1, "/Storage");	// ASP.NET 파일 업로드 컨트롤과 함께 업로드할 경로를 전달합니다.
		// 또는, 파일 컨트롤만 전달해도 됩니다.
		BANANA.Web.File.Upload(this.FileUpload1);	// 이때에는 web.config에서 uploadDirectory 항목에 저장된 경로를 사용하게 됩니다.

		// 파일이 업로드된 가상 경로를 반환합니다(예: "/Storage/").
		Response.Write(BANANA.Web.File.LogicalDirectory + "<br />");
		// 파일이 업로드된 실제 경로를 반환합니다(예: "D:\Storage\").
		Response.Write(BANANA.Web.File.PhysicalDirectory + "<br />");
		// 업로드된 파일의 원본 파일명(예: SearchGuide.pdf)
		Response.Write(BANANA.Web.File.OrginalFileName + "<br />");
		// 업로드된 파일의 유일한 파일명(예: 20130225122057219.pdf)
		Response.Write(BANANA.Web.File.UploadedFileName + "<br />");
		// 업로드된 파일의 크기를 byte 단위로 반환합니다(예: 20490).
		Response.Write(BANANA.Web.File.UploadedFileSize + "bytes<br />");
	}
	catch (Exception err)
	{
		MessageBox.Show(err.Message
			, "파일업로드 오류"
			, MessageBox.MessageBoxType.Alert
			, MessageBox.MessageBoxIcon.Error
			);
	}
}


자, 이번에는 파일을 다운로드 하는 함수를 한 번 살펴보겠습니다.
protected void Button1_Click(object sender, EventArgs e)
{
	try
	{
		// 파일이 저장되어 있는 폴더와 파일명까지 전달해 줍니다.
		BANANA.Web.File.Download("/Storage/Folder1/text.xls");

		// 파일이 저장되어 있는 폴더와 파일명을 별도로 전달할 수도 있습니다.
		BANANA.Web.File.Download("/Storage/Folder1/", "text.xls");
	}
	catch (Exception err)
	{
		MessageBox.Show(err.Message
			, "파일 다운로드 오류"
			, MessageBox.MessageBoxType.Alert
			, MessageBox.MessageBoxIcon.Error
			);
	}
}


이제까지 파일을 업로드하고 다운로드하는 클래스를 살펴 보았습니다.

TOP