Ich glaube, jeder hat diese Erfahrung gemacht: Es gibt einen Link auf der Seite, der auf eine Word-Datei auf dem Server verweist. Wenn auf dem Client-Computer Office installiert ist, wird durch Klicken auf den Link Word zum Öffnen und Durchsuchen aufgerufen, wenn der Client-Computer nicht über Office verfügt Wenn Sie auf den Link klicken, wird das Dialogfeld „Speichern“ angezeigt. Zusammenfassend lässt sich sagen, dass der Browser den Dateityp automatisch öffnet, wenn dies nicht der Fall ist. Andernfalls wird der Kunde aufgefordert, ihn zu speichern. Aber manchmal hoffen wir, dass wir, egal um welchen Dateityp es sich handelt, sie nicht öffnen und den Client direkt speichern lassen möchten. Um diese Anforderung zu erfüllen, muss für auf der Festplatte des Servers gespeicherte Dateien die SendBinary-Methode der ASPUpload-Komponente verwendet werden. Für in der Datenbank gespeicherte Dateien müssen Sie lediglich den Datensatz öffnen und die Binärdaten dann direkt an den Client ausgeben . , aber Sie müssen dem Browser den MIME-Typ, den Dateinamen und die Dateigröße der Datei mitteilen.
1. Dateien auf der Festplatte des Servers
<%
Hochladen, Dateipfad dimmen
Setze Upload = Server.CreateObject(Persits.Upload)
FilePath = Server.MapPath(.) & / & 2003529213019.txt
'SendBinary-Parameterbeschreibung:
'Parameter 1: Physischer Dateipfad
'Parameter 2: Ob der MIME-Typ und andere Informationen der Datei an den Browser gesendet werden sollen
„Parameter drei: Dateityp, Sie können einen bestimmten MIME-Typ angeben, aber im Allgemeinen können Sie application/octet-binary verwenden.“
'Parameter 4: Lassen Sie den Client die Datei speichern oder direkt öffnen. True: Speichern; False (Standard): Öffnen
Upload.SendBinary FilePath,True,application/octet-binary,True
%>
2. Dateien in der serverseitigen Datenbank
<%
Dim objConn,objRs
Set objConn = Server.CreateObject(ADODB.Connection)
Setze objRs = Server.CreateObject(ADODB.RecordSet)
objConn.open Driver={Microsoft Access Driver (*.mdb)};dbq= & Server.MapPath(db1.mdb)
objRs.open select * from t5 where 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)) 'Hier muss die CStr-Konvertierung verwendet werden
Response.BinaryWrite objRs(file)
objRs.close
Setze objRs = nichts
objConn.close
Setze objConn = nichts
%>
Diese Methode erfordert, dass beim Speichern der Datei gleichzeitig der Dateiname und die Dateigröße gespeichert werden! Wenn der Dateiname und die Größe nicht angegeben sind und der Browser den Dateityp erkennt, wird er automatisch geöffnet. Andernfalls wird der Client aufgefordert, ihn zu speichern.