Ein Problem ist mit ASP-Bordmitteln
SendFile lösbar und mittels zweier Komponenten
Beide lesen Dateien binär ein, und schicken diese dann mit Response.BinaryWrite an den Client.
Zur ersten Lösung: SA-FileManager. Um ein Bild names "aspgerman.gif" an den Client zu schicken braucht man folgenden Code:
<%
Dim fcObj, strPath
strPath = Server.MapPath("aspgerman.gif")
Dim oFM, oBS
Set oFM = CreateObject("SoftArtisans.FileManager")
Set oBS = oFM.OpenBinaryFile(strPath)
Response.ContentType = "image/gif"
Response.AddHeader "Content-Disposition", "filename=logo.gif"
Response.BinaryWrite oBS.ReadAll
Set oBS = Nothing
Set oFM = Nothing
Response.End
%>
Da der FileManager seinem Namen gerecht wird, muß man den Part des Schickens an den Client selbst übernehmen. Dazu gehört den ContentType zu setzen, und Response.BinaryWrite durchzuführen. Der zusätzliche Header wäre nicht notwendig, aber dient zur Demonstration daß man dem Client nicht unbedingt den originalen Namen mitteilen muß (zB interessant für geschützte Downloads via ASP Seiten).
Wenn man wirklich nur die Funktionaliät des Schickens an den Client braucht, dann ist FileCache der einfachere Weg - es übernimmt einige der Tasks automatisch im Hintergrund:
<%
Set fcObj = Server.CreateObject("Softwing.FileCache.1")
bResult = fcObj.InitFromFile("aspgerman.gif", False)
fcObj.MimeType = "image/gif"
bResult = fcObj.Write()
Response.End
%>
Die Datei wird mit InitFromFile automatisch gelesen, der MimeType (ContentType) wird gesetzt und dann findet das Bild mit Write den Weg zum Client - die ganzen Response Objekt Befehle werden intern ausgeführt. Diese Komponente ist ein Beispiel wie man oft gebrauchte Funktionalität in Komponenten verpacken sollte.