Ik heb een download script (zie onder) die een browser een file aanbied. dit gebeurt met Binarywrite.
Helaas kom ik met deze methode niet boven een file van 35 MB of hoger (er onder is geen probleem). De browser geeft geen error maar hij blijft proberen de file te halen (onder de 35 mb duurt dit 5 sec).
Wie heeft hier een oplossing voor of kent dit probleem.
Code:
<%
On Error Resume Next
If Not Response.isClientConnected Then
Response.end
End If
Response.buffer = true
Response.clear
Dim mFile
Dim mStream
Dim fso,stream
mFile = Trim(Request.QueryString("file"))
Response.contenttype = "application/octet-stream"
'Custom server component
Set objBinFile = Server.CreateObject("ASPBinFile.clsASPBinFile")
mStream = objBinFile.BinFileRead(mFile)
'Use FilesystemObject to get file size (does not work with above special dll
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set stream = fso.GetFile(mFile)
Response.AddHeader "content-length", stream.Size
Response.Addheader "Content-Disposition", "Inline; filename=file.exe"
'Response.Addheader "Content-Disposition", "Inline; filename=" & mFile
Response.CacheControl = "public"
Response.binarywrite mstream
Set objBinFile = Nothing
Set fso = Nothing
Response.End
%>
Dit is de DLL voor het aanbieden van de file (ASPBinFile.clsASPBinFile):
{ASPBinFile.dll}
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "clsASPBinFile"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
Function BinFileRead(ByVal inFileSpec As String) As Variant
On Error GoTo errHandler
Dim mHandle
Dim lngFileLen As Long
Dim arrData() As Byte
mHandle = FreeFile
Open inFileSpec For Binary Access Read As #mHandle
lngFileLen = FileLen(inFileSpec)
ReDim arrData(lngFileLen)
Get #mHandle, , arrData
Close #mHandle
BinFileRead = arrData
Exit Function
errHandler:
End Function
Helaas kom ik met deze methode niet boven een file van 35 MB of hoger (er onder is geen probleem). De browser geeft geen error maar hij blijft proberen de file te halen (onder de 35 mb duurt dit 5 sec).
Wie heeft hier een oplossing voor of kent dit probleem.
Code:
<%
On Error Resume Next
If Not Response.isClientConnected Then
Response.end
End If
Response.buffer = true
Response.clear
Dim mFile
Dim mStream
Dim fso,stream
mFile = Trim(Request.QueryString("file"))
Response.contenttype = "application/octet-stream"
'Custom server component
Set objBinFile = Server.CreateObject("ASPBinFile.clsASPBinFile")
mStream = objBinFile.BinFileRead(mFile)
'Use FilesystemObject to get file size (does not work with above special dll
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set stream = fso.GetFile(mFile)
Response.AddHeader "content-length", stream.Size
Response.Addheader "Content-Disposition", "Inline; filename=file.exe"
'Response.Addheader "Content-Disposition", "Inline; filename=" & mFile
Response.CacheControl = "public"
Response.binarywrite mstream
Set objBinFile = Nothing
Set fso = Nothing
Response.End
%>
Dit is de DLL voor het aanbieden van de file (ASPBinFile.clsASPBinFile):
{ASPBinFile.dll}
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "clsASPBinFile"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
Function BinFileRead(ByVal inFileSpec As String) As Variant
On Error GoTo errHandler
Dim mHandle
Dim lngFileLen As Long
Dim arrData() As Byte
mHandle = FreeFile
Open inFileSpec For Binary Access Read As #mHandle
lngFileLen = FileLen(inFileSpec)
ReDim arrData(lngFileLen)
Get #mHandle, , arrData
Close #mHandle
BinFileRead = arrData
Exit Function
errHandler:
End Function