Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/10/2010, 11:15
ruben_zer0
 
Fecha de Ingreso: enero-2010
Mensajes: 31
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Como Descargar TXT desde Server

Cita:
Iniciado por frader Ver Mensaje
hola que tal quisiera ver la posiblidad de descargar un TXT. ya que al darle clic al acceso. abre el texto en el explorer, pero lo que quiero es que lo abra en bloc de notas o mejor aun me pida descargarlo.

Response.Clear()
Response.ContentType = "text/plain"
Try
Response.AppendHeader("Content-Disposition", "filename=MIARCHIVO.TXT")
'Response.Charset = "UTF-8"
'Response.ContentType = ContentType
Response.Flush()
Response.TransmitFile(sPath)

Response.End()
Mira yo agregue una nueva webform:
public partial class DescargaArchivoTexto : System.Web.UI.Page {
//private Archivos CArchivos = new Archivos();
protected void Page_Load(object sender, EventArgs e) {
StringBuilder Mensaje;
//Procedimiento para poder desgargar un achivo de texto sin que lo imprima en el navegador.
//La parte de HTML está vacio para que no ponga basura al final del archivo de texto.
//Recibe como parámetro el nombre del archivo que se quiere descargar
if (this.Page.Request.Params["file"] != null) {
string NomArchivo = Request.PhysicalApplicationPath.ToString() + this.Page.Request.Params["file"].ToString();
try {
FileInfo NombreArchivo = new FileInfo(@NomArchivo);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
StringBuilder Temporal = new StringBuilder();
Temporal.Append("attachment; filename=").Append(NombreArchivo.Name);
Response.AppendHeader("content-disposition", Temporal.ToString());
Response.ContentType = GetContentType(NombreArchivo.Extension.ToString()) ;
Response.WriteFile(NombreArchivo.FullName);
} catch (Exception ex) {
Mensaje = new StringBuilder();
Mensaje.Append("Ocurrió un error al querer descargar el archivo preparado\n:").Append(ex.ToString());
MessageBox.Show(Mensaje.ToString());
}
} else {
MessageBox.Show("No se recibió ningún nombre de archivo para descargar.");
}
}
private string GetContentType(string FileExtension)
{
// Convertimos la extensión en minúsculas
string ext = FileExtension.ToLower(System.Threading.Thread.Curr entThread.CurrentCulture);
// Verificamos que contenga el punto de
// otra manera habría que agregarlo para
// poder obtener los resultados esperados
if (!ext.StartsWith("."))
ext = String.Concat(".", ext);
// Se declara un permisos pata obtener
// acceso de solo lectura al registro
// NOTA: Se está utilizando: using System.Security.Permissions;
RegistryPermission Reg = new RegistryPermission(RegistryPermissionAccess.Read, "HKEY_CLASSES_ROOT\\");
// Creamos un llave de registro para
// HKEY_CLASSES_ROOT
Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot;
// Intentamos crear una llave de registro
// a partir de la extensión
Microsoft.Win32.RegistryKey regKeyExt = regKey.OpenSubKey(ext);
// Si la extensión existe como sub llave de registro
// entonces devolveremos su valor de lo contrario
// se devuelve el valor predeterminado
if(regKeyExt == null)
return "application/octet-stream";
else
return regKeyExt.GetValue("Content Type","application/octet-stream").ToString();
}
}


Redireccionas y listo:
Response.Redirect("/DescargaArchivoTexto.aspx?file=" + archivo);