28,409
社区成员




<%
path = Request("path")
fname = Request("filename")
sFilePath = Server.MapPath(path)
Set oSF = CreateObject("Scripting.FileSystemObject")
Set f = oSF.GetFile(sFilePath)
Set oStream = Createobject("ADODB.Stream")
With oStream
.Type = 1
.Mode = 3
.Open
.LoadFromFile sFilePath
End With
Set oSF = Nothing
If Not TransferFile(oStream, "application/octet-stream", fname) Then
response.Write "Error"
End If
oStream.close
Set oStream = Nothing
Function TransferFile(ByRef oStream, sMimeType, sFilename)
Dim iChar, iSent, iSize
Dim c
Const FILE_TRANSFER_SIZE = 32768 '32k
iSent = 0
TransferFile = True
iSize = oStream.Size
With Response
.Charset = "GB2312"
.ContentType= sMimeType
.AddHeader "Accept-Ranges", "bytes"
.AddHeader "Content-Length", iSize
.AddHeader "Content-Type", sMimeType
.AddHeader "DownloadOptions", "noopen"
.AddHeader "Content-Disposition","attachment; filename=" & sFilename
End With
c = 0
Do While c<=iSize
iChar = oStream.Read(FILE_TRANSFER_SIZE)
c = c + FILE_TRANSFER_SIZE
With Response
.BinaryWrite(iChar)
iSent = iSent + FILE_TRANSFER_SIZE
If (iSent MOD FILE_TRANSFER_SIZE) = 0 Then
.Flush
If Not .IsClientConnected Then
TransferFile = False
Exit Do
End If
End If
End With
Loop
Response.Flush
If Not Response.IsClientConnected Then TransferFile = False
'Set oStream = Nothing
End Function
%>