<
%
filepath
=
request.querystring(
"
filepath
"
)
filenames
=
Split
(filepath,
"
/
"
)
filename
=
filenames(
1
)
Const
ForReading
=
1
Const
TristateTrue
=-
1
'
Unicode
Const
FILE_TRANSFER_SIZE
=
16384
'
16k
'
Use the following line for IIS4/PWS - this is the default for IIS5
Response.Buffer
=
True

Function
TransferFile(path, mimeType, filename)
Dim
objFileSystem, objFile, objStream
Dim
char
Dim
sent
send
=
0
TransferFile
=
True

Set
objFileSystem
=
Server.CreateObject(
"
Scripting.FileSystemObject
"
)
Set
objFile
=
objFileSystem.GetFile(Path)
Set
objStream
=
objFile.OpenAsTextStream(ForReading, TristateTrue)
Response.AddHeader
"
content-type
"
, mineType
Response.ContentType
=
"
application/octet-stream
"

response.AddHeader
"
Content-Disposition
"
,
"
attachment;filename=
"
&
filename
Response.AddHeader
"
content-length
"
, objFile.Size
Do
While
Not
objStream.AtEndOfStream
char
=
objStream.Read(
1
)
Response.BinaryWrite(char)
sent
=
sent
+
1
If
(sent
MOD
FILE_TRANSFER_SIZE)
=
0
Then
Response.Flush
If
Not
Response.IsClientConnected
Then
TransferFile
=
False
Exit
Do
End
If
End
If
Loop

Response.Flush
If
Not
Response.IsClientConnected
Then
TransferFile
=
False

objStream.Close
Set
objStream
=
Nothing
Set
objFileSystem
=
Nothing
End Function

Dim
path, mimeType, sucess
path
=
Server.MapPath(filepath)
mimeType
=
"
application/octet-stream
"
sucess
=
TransferFile(path, mimeType,filename)
Response.End
%
>