En la producción de sitios web, a menudo es necesario desarrollar la función de descarga de archivos. Hay tres formas de descargar archivos:
1. Código de descarga ASP
<%
nombre de archivo = Solicitud.QueryString ("Nombre de archivo")
si nombre de archivo = "" entonces
Response.Write "Ingrese el parámetro de nombre de archivo y especifique el nombre del archivo descargado"
demás
Response.ContentType = "aplicación/flujo de octeto"
Response.AddHeader "disposición-contenido", "adjunto; nombre de archivo =" & nombre de archivo
Establecer FileStream = Server.CreateObject ("Adodb.Stream")
FileStream.Modo = 3
FileStream.Tipo = 1
FileStream.Abrir
FileStream.LoadFromFile( Server.MapPath(nombre de archivo))
Response.BinaryWrite( FileStream.Read )
FileStream.Close()
Establecer FileStream = nada
terminar si
%>Guarde el código anterior en un archivo tipo ASP y utilícelo como: download.asp?filename=a.gif.
2. Utilice el cliente web
Agregue el siguiente código al evento del botón de descarga
System.Net.WebClient wc = nuevo System.Net.WebClient();
wc.DownloadFile( " El código anterior descargará el archivo a.gif del lado del servidor en la unidad c del cliente sin ningún mensaje. Da bastante miedo sin ningún mensaje, pero a veces es necesario hacer esto. Este código también se puede utilizar Ejecute el programa en el escritorio.
3. Código de descarga de ASP NET con indicaciones de descarga
//Abre el archivo para descargar
System.IO.FileStream r = nuevo System.IO.FileStream(FileName, System.IO.FileMode.Open);
//Establecer información básica
Respuesta.Buffer = falso;
Response.AddHeader("Conexión", "Keep-Alive");
Response.ContentType = "aplicación/flujo de octeto";
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(FileName));
Response.AddHeader("Contenido-Longitud", r.Length.ToString());
mientras (verdadero)
{
//Abrir espacio en el buffer
byte[] buffer = nuevo byte[1024];
//Leer datos del archivo
int longitud = r.Read(búfer, 0, 1024);
if (leng == 0) // Hasta el final del archivo, final
romper;
if (leng == 1024) // La longitud de los datos del archivo leído es igual a la longitud del búfer y los datos del búfer se escriben directamente
Respuesta.BinaryWrite(búfer);
demás
{
// Leer los datos del archivo es más pequeño que el búfer, redefinir el tamaño del búfer, solo se usa para leer el último bloque de datos del archivo
byte[] b = nuevo byte[leng];
para (int i = 0; i < largo; i++)
b[i] = búfer[i];
Respuesta.BinaryWrite(b);
}
}
r.Close();//Cerrar el archivo descargado
Response.End(); //Finalizar descarga del archivo. Este método tiene un cuadro de aviso de descarga, para que el servidor pueda saber cuándo se completa la descarga.