Je pense que tout le monde a cette expérience : il y a un lien sur la page pointant vers un fichier Word sur le serveur. Lorsque Office est installé sur la machine client, cliquer sur le lien appellera Word pour l'ouvrir et parcourir lorsque la machine client n'a pas Office ; installé, cliquer sur le lien fera apparaître la boîte de dialogue Enregistrer. En résumé, si le navigateur reconnaît le type de fichier, il l'ouvrira automatiquement ; sinon, il proposera au client de le sauvegarder. Mais parfois, nous espérons que quel que soit le type de fichier, nous ne souhaitons pas l'ouvrir et laisser le client le sauvegarder directement. Pour répondre à cette exigence, pour les fichiers enregistrés sur le disque dur du serveur, la méthode SendBinary du composant ASPUpload doit être utilisée. Pour les fichiers enregistrés dans la base de données, il vous suffit d'ouvrir le jeu d'enregistrements, puis de transmettre les données binaires directement au client. , mais vous devez indiquer au navigateur le type MIME, le nom et la taille du fichier.
1. Fichiers sur le disque dur du serveur
<%
Dim Télécharger, FilePath
Définir le téléchargement = Server.CreateObject (Persits.Upload)
FilePath = Server.MapPath(.) & / & 2003529213019.txt
'Description du paramètre SendBinary :
'Paramètre 1 : Chemin physique du fichier
'Paramètre 2 : s'il faut envoyer le type MIME et d'autres informations du fichier au navigateur
'Paramètre trois : type de fichier, vous pouvez spécifier un type MIME spécifique, mais vous pouvez généralement utiliser application/octet-binary
'Paramètre 4 : Laisser le client enregistrer le fichier ou l'ouvrir directement. Vrai : enregistrer ; Faux (par défaut) : ouvrir
Upload.SendBinary FilePath, True, application/octet-binary, True
%>
2. Fichiers dans la base de données côté serveur
<%
Dim objConn, objRs
Définir objConn = Server.CreateObject (ADODB.Connection)
Définir objRs = Server.CreateObject (ADODB.RecordSet)
objConn.open Driver={Pilote Microsoft Access (*.mdb)};dbq= & Server.MapPath(db1.mdb)
objRs.open select * from t5 où id=2,objConn,1,3
Response.ContentType = application/octet-stream
Response.AddHeader Content-Disposition,attachment;filename= & objRs(filename)
Response.AddHeader Content-Length,CStr(objRs(size)) 'La conversion CStr doit être utilisée ici
Réponse.BinaryWrite objRs (fichier)
objRs.close
Définir objRs = rien
objConn.close
Définir objConn = rien
%>
Cette méthode nécessite que le nom du fichier et la taille du fichier soient enregistrés en même temps lors de l'enregistrement du fichier ! Si le nom et la taille du fichier ne sont pas spécifiés, si le navigateur reconnaît le type de fichier, il l'ouvrira automatiquement ; sinon, le client sera invité à l'enregistrer !