Sie können den Streaming-Download nutzen (speicherverbrauchend, weniger verbrauchend) oder direkt zur Datei gehen.
<%
Const USE_STREAM = 0 '0. Download ohne Stream (Adodb.Stream) 1. Download mit Stream
Const ALLOW_FILE_EXT = "rar,zip,chm,doc,xls,swf,mp3,gif,jpg,jpeg,png,bmp" 'Erlauben Sie die Erweiterung der heruntergeladenen Datei, um zu verhindern, dass der Quellcode heruntergeladen wird.
Dim sDownFilePath 'Download-Dateipfad
sDownFilePath = Trim(Request("FilePath"))
'Oder rufen Sie den Dateipfad aus der Datenbank basierend auf der übergebenen Datei-ID ab
. ' Wenn sDownFilePath ein absoluter Pfad ist, müssen Sie sDownFilePath unbedingt in einen relativen Pfad zu dieser Datei konvertieren.'sDownFilePath
= "focus.swf"
Rufen Sie die DownloadFile(sDownFilePath)
-Funktion DownloadFile
auf(s_DownFilePath )
'Bestimmen Sie, ob der Dateiname übergeben wird
Wenn IsNull(s_DownFilePath) = True oder Trim(s_DownFilePath) = "" Dann
OutputErr „Fehler: Bestimmen Sie zunächst die herunterzuladende Datei. Der Download ist fehlgeschlagen.“
End If
'Bestimmen Sie, ob die Erweiterung zulässig ist
Dims_FileExt
s_FileExt = Mid(s_DownFilePath, InstrRev(s_DownFilePath, ".")+1)
Wenn InStr("," & ALLOW_FILE_EXT & ",", "," & s_FileExt & ","") <= 0 Dann
OutputErr „Fehler: Der Dateityp („ & s_FileExt &“) darf nicht heruntergeladen werden und der Download ist fehlgeschlagen.“
Ende wenn
s_DownFilePath = Replacement(s_DownFilePath, "", "/")
'Aus Sicherheitsgründen ist das Herunterladen von Dateien in einigen Verzeichnissen verboten und wird hier behandelt.
'
'Überprüfen Sie, ob der Server FSO unterstützt
Dim o_Fso
Bei Fehler Weiter fortsetzen
Setze o_Fso = Server.CreateObject("Scripting.FileSystemObject")
Wenn Err.Number <> 0, dann
Err.Clear
OutputErr „Fehler: Der Server unterstützt die FSO-Komponente nicht und der Download ist fehlgeschlagen.“
End If
'Dateinamen und Dateigröße abrufen
Dims_FileMapPath
Dimmen Sie o_File, s_FileName, n_FileLength
s_FileMapPath = Server.MapPath(s_DownFilePath)
If (o_Fso.FileExists(s_FileMapPath)) = True Then
Setze o_File = o_Fso.GetFile(s_FileMapPath)
s_FileName = o_File.Name
n_FileLength = o_File.Size
o_File.Close
Anders
OutputErr „Fehler: Datei existiert nicht, Download fehlgeschlagen“
Ende wenn
Set o_Fso = Nothing
'Bestimmen Sie, ob die heruntergeladene Dateigröße den Grenzwert überschreitet
'
„Wenn es nicht per Stream heruntergeladen wird, gehen Sie direkt zur Datei.“
Wenn USE_STREAM = 0, dann
Response.Redirect sDownFilePath
Antwort.Ende
End If
'Ermitteln Sie, ob der Server Adodb.Stream unterstützt
Bei Fehler Weiter fortsetzen
Setze o_Stream = Server.CreateObject("Adodb.Stream")
Wenn Err.Number <> 0, dann
Err.Clear
OutputErr „Fehler: Der Server unterstützt die Adodb.Stream-Komponente nicht und der Download ist fehlgeschlagen.“
Ende, wenn
o_Stream.Typ = 1
o_Stream.Open
o_Stream.LoadFromFile s_FileMapPath
Response.Buffer = True
Antwort.Klar
Response.AddHeader „Content-Disposition“, „attachment; filename=" & s_FileName
Response.AddHeader „Content-Length“, n_FileLength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
Response.BinaryWrite o_Stream.Read
Response.Flush
o_Stream.Close
Setze o_Stream = Nothing
End Function
Sub OutputErr(s_ErrMsg)
Response.Write „<font color=red>“ & s_ErrMsg & „</font>“
Antwort.Ende
End Sub
%>
http://www.cnblogs.com/jiny-z/archive/2006/08/29/489102.html