Download de arquivos com ASP.Net

Problema do aluno: Como faço download de um arquivo usando ASP.Net 2005?

Solução: Criei um website que faz o download dos arquivos existentes numa pasta do site. Se, além disso, quiser gravar no banco de dados, pode dar uma olhada nesse post para ver o código. Para upload, veja esse post.

Criei um web site em C#, chamado exemploDownload e, na página Default.aspx, posicionei o controle DropDownList, como na figura abaixo:

teladownload.gif

Criei, usando o Solution Explorer, uma pasta IMAGES, que conterá os arquivos. 

Para o manipular evento Load da Page, criei o seguinte método:

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
   {
      System.IO.
DirectoryInfo di = new System.IO.DirectoryInfo(Request.ServerVariables[“APPL_PHYSICAL_PATH”] + @”\IMAGES\”);
      System.IO.
FileInfo[] fi = di.GetFiles();
      DropDownList1.Items.Add(
“(escolha uma imagem)”);
      foreach (System.IO.FileInfo arquivo in fi)
      DropDownList1.Items.Add(arquivo.Name);
   }
}

E, para o evento SelectedIndexChanged do DropDownList, criei o seguinte código:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
   if (DropDownList1.SelectedIndex != 0)
   {
      System.IO.
FileInfo arquivo = new System.IO.FileInfo(Request.ServerVariables[“APPL_PHYSICAL_PATH”] + @”\IMAGES\” + DropDownList1.SelectedValue);
      Response.Clear();
      Response.AddHeader(
“Content-Disposition”, “attachment; filename=” + arquivo.Name);
      Response.AddHeader(
“Content-Length”, arquivo.Length.ToString());
      Response.ContentType =
“application/octet-stream”;|
      Response.WriteFile(arquivo.FullName);
      Response.End();
   }
}