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 ->. save target as ....commande 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. <%@langue=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
appeler downloadFile(replace(replace(Request(Filename),/,),/,))
Fonction downloadFichier(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érifier 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
finir si
' envoyer les en-têtes aux utilisateurs Parcourir
Response.AddHeader Content-Disposition, pièce jointe ; nom de fichier =&f.name
Response.AddHeader Contenu-Longueur, intFilelength
Réponse.CharSet = UTF-8
Response.ContentType = application/octet-stream
'sortir le fichier dans le navigateur
Response.BinaryWrite s.Read
Réponse.Flush
' ranger
s.Fermer
Définir s = Rien
Fonction de fin
finir si
%>