더북(TheBook)

5. 이번에도 UI가 필요 없는 페이지 중에서 이미지 파일만 내려받게 해주는 ImageDown.aspx 페이지를 구성해보자. ImageDown.aspx 페이지는 그대로 두고, 코드 숨김 페이지인 ImageDown.aspx.cs 파일을 열고 다음과 같이 타이핑한다. 소스를 분석해보면 알겠지만, 이 또한 간단하게 이미지 파일만 내려받는다.

▼  ~/DotNetNote/ImageDown.aspx.cs

using System;
using System.IO;

namespace MemoEngine.DotNetNote
{
  /// <summary>
  /// ImageDown : 완성형(DotNetNote) 게시판의 이미지 전용 다운 페이지
  /// 이미지 경로를 보여주지 않고 다운로드한다.
  /// </summary>
  public partial class ImageDown : System.Web.UI.Page
  {
      protected void Page_Load(object sender, System.EventArgs e)
      {
          // 넘어온 파일명 체크
          if (String.IsNullOrEmpty(Request.QueryString[“FileName”]))
          {
              Response.End();
          }
          
          string fileName = Request.Params[“FileName”].ToString();
          string ext = Path.GetExtension(fileName); // 확장자만 추출
          string contentType = ””;
          if (ext == ”.gif” || ext == ”.jpg”
          || ext == ”.jpeg” || ext == ”.png”)
          {
              switch (ext)
              {
                  case ”.gif”:
                      contentType = “image/gif”; break;
                  case ”.jpg”:
                      contentType = “image/jpeg”; break;
                  case ”.jpeg”:
                      contentType = “image/jpeg”; break;
                  case ”.png”:
                      contentType = “image/png”; break;
              }
          }
          else
          {
              Response.Write(
                  “<script language=‘javascript’>“
                  + “alert(‘이미지 파일이 아닙니다.’)</script>“);
              Response.End();
          }
          string file = Server.MapPath(”./MyFiles/”) + fileName;
          
          // 강제 다운로드 로직 적용
          Response.Clear();
          Response.ContentType = contentType;
          Response.WriteFile(file);
          Response.End();
      }
  }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.