Dans la réalisation de sites Internet, il est souvent nécessaire de développer la fonction de téléchargement de fichiers. Il existe trois manières de télécharger des fichiers :
1. Code de téléchargement ASP
<%
nom de fichier = Request.QueryString("FileName")
si nom de fichier = "" alors
Response.Write "Veuillez entrer le paramètre de nom de fichier et spécifier le nom du fichier téléchargé"
autre
Response.ContentType = "application/octet-stream"
Response.AddHeader "disposition-contenu", "pièce jointe; nom de fichier =" & nom de fichier
Définir FileStream = Server.CreateObject("Adodb.Stream")
FileStream.Mode = 3
FileStream.Type = 1
FileStream.Open
FileStream.LoadFromFile( Server.MapPath(filename))
Response.BinaryWrite( FileStream.Read )
FileStream.Close()
Définir FileStream = rien
finir si
%>Enregistrez le code ci-dessus dans un fichier de type asp et utilisez-le comme : download.asp?filename=a.gif.
2. Utilisez WebClient
Ajoutez le code suivant à l'événement du bouton de téléchargement
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadFile( " Le code ci-dessus téléchargera le fichier a.gif côté serveur sur le lecteur c du client sans aucune invite. C'est assez effrayant sans aucune invite, mais il est parfois nécessaire de le faire. Ce code peut également être utilisé Exécutez le programme sur le bureau.
3. Code de téléchargement ASP NET avec invites de téléchargement
//Ouvre le fichier à télécharger
System.IO.FileStream r = new System.IO.FileStream(FileName, System.IO.FileMode.Open);
//Définir les informations de base
Réponse.Buffer = false ;
Response.AddHeader("Connexion", "Keep-Alive");
Response.ContentType = "application/octet-stream" ;
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(FileName));
Response.AddHeader("Content-Length", r.Length.ToString());
tandis que (vrai)
{
//Ouvrir l'espace tampon
octet[] tampon = nouvel octet[1024];
//Lire les données du fichier
int leng = r.Read(buffer, 0, 1024);
if (leng == 0)//À la fin du fichier, fin
casser;
if (leng == 1024)//La longueur des données du fichier lu est égale à la longueur du tampon, et les données du tampon sont écrites directement
Réponse.BinaryWrite(tampon);
autre
{
// Les données du fichier lu sont plus petites que le tampon, redéfinissent la taille du tampon, utilisées uniquement pour lire le dernier bloc de données du fichier
octet[] b = nouvel octet[longueur];
pour (int i = 0; i < longueur; i++)
b[i] = tampon[i];
Réponse.BinaryWrite(b);
}
}
r.Close();//Ferme le fichier téléchargé
Response.End(); //Fin du téléchargement du fichier. Cette méthode comporte une boîte d'invite de téléchargement, afin que le serveur puisse savoir quand le téléchargement est terminé.