File downloading with COM and ASP






4.91/5 (9 votes)
Sep 6, 2000

292072

4655
A COM object you can use to transfer files in ASP
Introduction
This article is about direct file downloading through a COM component. It uses the
IResponse
interface to send a file directly to the client browser.
With this approach you can protect your files from being downloaded by an unauthorized person.
To send the file to the client you need to register this kind of file within the IIS MIME types. To do it go to the ISS administration and under the HTTP Header add this kind of file. In the sample a zip file is used, so the MIME type is:
Extension=.zip ContentType=application/x-zip-compressed
To send a file to the browser you must set the Response.Buffer
to
TRUE
and the ContentType
to the file type. After this you
send the data using the Response
object through the BinaryWrite
method.
To accomplish this task a component was developed: FileTransfer
. The
interface used is called IBinaryRead
. These are its methods:
Method | Description |
ReadBinFile(filename) | This method returns the content of the file as an VARIANT (SAFEARRAY) |
ResponseBinaryWrite(filename, responseObject) | This method reads the file and send it using the Response object. It returns the operation result |
If you want to download a custom file type, you must register it in the client machine too.
An example of using the FileTransfer
object follows:
<% Option Explicit Dim objBinaryRead Dim saBinFile 'if you don't want error safe Dim bDownloadStatus Set objBinaryRead = CreateObject("FileTransfer.BinaryRead") Response.Buffer = true Response.ContentType = "application/x-zip-compressed" 'transfer the file to the client bDownloadStatus = objBinaryRead.ResponseBinaryWrite("c:\temp\test.zip", Response) 'this is not an error safe code 'if the file doesn't exist the ASP will have an error 'saBinFile = objBinaryRead.ReadBinFile("c:\temp\test.zip") 'Response.BinaryWrite saBinFile 'Set saBinFile = nothing Set objBinaryRead = nothing %>