AspGerman Wiki

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.

ScrewTurn Wiki version 2.0.33. Some of the icons created by FamFamFam.