Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/09/2006, 08:30
Mitico
 
Fecha de Ingreso: marzo-2003
Mensajes: 85
Antigüedad: 21 años, 1 mes
Puntos: 1
Para leerlos:

Código:
//Valor del Id del fichero a mostrar
private Int32 Identif = Request.Params["ValorIdentif"];

//Busca en la tabla que sea el registro correspondiente a ese ID
//Y saca los 4 campos necesarios que siempre se llamarán igual en todas las tablas
private SqlConnection Conecta = new SqlConnection("CadenaConexion");
private SqlCommand Comando = new SqlCommand("Select Nombre_Fichero, Contenido_Fichero, Tipo_Fichero, Tamano_Fichero " + "From TABLA Where idFichero=@ID", Conecta);
Comando.Parameters.Add("@ID", Identif);
SqlDataReader Datos = null;
Conecta.Open();
Datos = Comando.ExecuteReader(CommandBehavior.CloseConnection);
try
{
	 if (Datos.HasRows)
	 {
		  Datos.Read();
		  if (System.Convert.ToString(Datos["Tipo_Fichero"]) == "application/pdf")
			   Response.AppendHeader("content-disposition", "attachment; filename=" + System.Convert.ToString(Datos["Nombre_Fichero"]));
		  else
			   Response.AppendHeader("content-disposition", "inline; filename=" + System.Convert.ToString(Datos["Nombre_Fichero"]));
		  // Establece el tipo de contenido que se va amostrar. Por ejemplo: "application/msword"
		  Response.ContentType = System.Convert.ToString(Datos["Tipo_Fichero"]);
		  Response.Charset = "charset.ansi";
		  //saca el contenido del documento a response output stream
		  Response.OutputStream.Write((byte[])(Datos["Contenido_Fichero"]), 0, System.Convert.ToInt32(Datos["Tamano_Fichero"]));
	 }
}
catch (Exception ex)
{
	 Response.Write(ex.ToString());
}
finally
{
	 Datos.Close();
}
Éste código lo tenía en una página sin nada más y lo que hacía era un enlace a esa página abriéndola en ventana nueva. Puedes usarlo así o con un IFrame, el resto investigar porque ya ni idea... ¡qué tiempos aquellos!

Al final volví a guardar los archivos físicamente, me resultó más cómodo.

Un saludo.