using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; namespace SampleCS.Upload { /// /// Down에 대한 요약 설명입니다. /// public class Down : System.Web.UI.Page { string strFileName = String.Empty;//넘겨져온 파일명 저장 string strBaseDir = String.Empty;//어디에 저장할 폴더명 private void Page_Load(object sender, System.EventArgs e) { strFileName = Request.QueryString["FileName"].ToString(); strBaseDir = Server.MapPath(".") + @"\files"; if(strFileName == null) //넘겨져온 파일명이 없다면... { Response.End();//멈춤 } else //강제 다운로드 { Response.Clear();//버퍼 비우기 Response.ContentType = "application/octet-stream"; Response.AddHeader( "Content-Disposition", "attachment;filename=" + Server.UrlPathEncode(strFileName)); Response.WriteFile( Path.Combine(strBaseDir, strFileName)); //다운횟수 증가 UpdateDownCount();//다운 횟수 증가 함수 호출 Response.End();//버퍼 비우고, 종료. } } private void UpdateDownCount() { SqlConnection objCon = new SqlConnection(); objCon.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["CONNECTION_STRING"].ToString(); objCon.Open(); SqlCommand objCmd = new SqlCommand(); objCmd.Connection = objCon; objCmd.CommandText = "Update Upload Set DownCount = DownCount + 1 Where FileName = @FileName"; objCmd.Parameters.Add(new SqlParameter("@FileName", strFileName)); objCmd.CommandType = CommandType.Text; objCmd.ExecuteNonQuery(); objCon.Close(); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: 이 호출은 ASP.NET Web Form 디자이너에 필요합니다. // InitializeComponent(); base.OnInit(e); } /// /// 디자이너 지원에 필요한 메서드입니다. /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. /// private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }