Lors de la liaison de documents dans IE, s'il rencontre un document pris en charge par OLE, IE appellera automatiquement le programme correspondant pour l'ouvrir. Parfois, cette fonction n'est pas ce dont nous avons besoin, même si nous pouvons rappeler à l'utilisateur de cliquer avec le bouton droit de la souris ->. Commande "Enregistrer la cible sous" "..." pour télécharger des documents, mais ce n'est pas très convivial après tout. Cet article décrit l'utilisation des méthodes FSO et Stream pour implémenter le téléchargement direct de documents par IE
<%@ language=vbscript codepage
.=65001%>
<%
'Le nom du fichier doit être saisi
si Demande("Nom de fichier")="" alors
réponse.write "<h1>Erreur :</h1>Le nom de fichier est vide !<p>"
autre
appelez downloadFile(replace(replace(Request("Filename"),"",""),"/",""))
Fonction downloadFile(strFile)
' assurez-vous que vous utilisez la dernière version de MDAC pour que cela fonctionne
'obtenir le chemin complet du fichier spécifié
strFilename = serveur.MapPath(strFile)
' vider le tampon
Réponse.Buffer = True
Réponse.Effacer
'créer un flux
Définir s = Server.CreateObject("ADODB.Stream")
s.Ouvrir
' Définir comme binaire
s.Type = 1
' charger dans le fichier
en cas d'erreur, reprendre ensuite
'vérifie que le fichier existe
Définir fso = Server.CreateObject("Scripting.FileSystemObject")
sinon fso.FileExists(strFilename) alors
Response.Write("<h1>Erreur :</h1>"&strFilename&" n'existe pas !<p>")
Réponse.Fin
finir si
'obtenir la longueur du fichier
Définir f = fso.GetFile(strFilename)
intFilelength = f.size
s.LoadFromFile(strFilename)
si c'est une erreur, alors
Response.Write("<h1>Erreur : </h1>Erreur inconnue !<p>")
Réponse.Fin
end if
' envoie les en-têtes aux utilisateurs Parcourir
Response.AddHeader "Content-Disposition", "attachment; filename="&f.name
Response.AddHeader "Content-Length", intFilelength
Réponse.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
' affiche le fichier dans le navigateur
Response.BinaryWrite s.Read
Response.Flush
' ranger
s.Fermer
Définir s = Rien de
fin de fonction
finir si
%>