|
Home > Archive > IIS ASP > December 2004 > ASP File Streaming
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
ASP File Streaming
|
|
| James Whitehead 2004-12-20, 8:47 pm |
| I have the following code which works fine downloading smaller files, the
trouble is most of the files to be downloaded are large. With large files it
just returns a HTTP 500 error.
Any ideas how to get this to work. I have tried to split the download into
chunks but it just timesout.
Set objFile = objFSO.GetFile(strFileName)
'-- first clear the response, and then set the appropriate headers
Response.Clear
'-- the filename you give it will be the one that is shown
' to the users by default when they save
Response.AddHeader "Content-Disposition", "attachment; filename=" &
strFileName
Response.AddHeader "Content-Length", objFile.Size
Response.ContentType = "application/octet-stream"
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
'-- set as binary
objStream.Type = 1
Response.CharSet = "UTF-8"
'-- load into the stream the file
objStream.LoadFromFile(strFileName)
'-- send the stream in the response
Response.BinaryWrite(objStream.Read)
Response.Flush
objStream.Close
Set objStream = Nothing
Set objFile = Nothing
| |
| James Whitehead 2004-12-20, 8:47 pm |
| Further to this I am now trying to break the code into chunks again. Here is
the code. Everything works until I get to the line zzz=BA.Read(100) and it
returns a HTTP 500 Error. Any ideas?
Dim FileSize, ByteCounter, FileName, ChunkSize
ChunkSize = 1024
FileName = Trim(Request.QueryString("File"))
FileSize =
CreateObject("scripting.filesystemobject").GetFile(FileName).Size
'This is download
Response.ContentType = "application/x-msdownload"
'Set file name
Response.AddHeader "Content-Disposition", "attachment; filename=""" &
GetFileName(FileName) & """"
'Set Content-Length (ASP doen not set it when Buffer = False)
Response.AddHeader "Content-Length", FileSize
Response.CacheControl = "no-cache"
Dim BA
' Set BA = CreateObject("ScriptUtils.ByteArray")'
Set BA = Server.CreateObject("ADODB.Stream")
BA.Open
BA.LoadFromFile(FileName)
zzz= BA.Read(100)
"James Whitehead" <James@whitehead.co.uk> wrote in message
news:#RZDLBv5EHA.3840@tk2msftngp13.phx.gbl...
> I have the following code which works fine downloading smaller files, the
> trouble is most of the files to be downloaded are large. With large files
it
> just returns a HTTP 500 error.
>
> Any ideas how to get this to work. I have tried to split the download into
> chunks but it just timesout.
>
> Set objFile = objFSO.GetFile(strFileName)
> '-- first clear the response, and then set the appropriate headers
> Response.Clear
> '-- the filename you give it will be the one that is shown
> ' to the users by default when they save
> Response.AddHeader "Content-Disposition", "attachment; filename=" &
> strFileName
> Response.AddHeader "Content-Length", objFile.Size
> Response.ContentType = "application/octet-stream"
>
> Set objStream = Server.CreateObject("ADODB.Stream")
> objStream.Open
> '-- set as binary
> objStream.Type = 1
> Response.CharSet = "UTF-8"
> '-- load into the stream the file
> objStream.LoadFromFile(strFileName)
> '-- send the stream in the response
>
> Response.BinaryWrite(objStream.Read)
> Response.Flush
> objStream.Close
> Set objStream = Nothing
> Set objFile = Nothing
>
>
| |
| Tim Williams 2004-12-21, 2:54 am |
| Maybe try this code instead? See last listing on the page...
http://www.4guysfromrolla.com/webtech/083100-1.shtml
Tim
"James Whitehead" <James@whitehead.co.uk> wrote in message
news:ODkFGHw5EHA.3840@tk2msftngp13.phx.gbl...
> Further to this I am now trying to break the code into chunks again.
> Here is
> the code. Everything works until I get to the line zzz=BA.Read(100)
> and it
> returns a HTTP 500 Error. Any ideas?
>
> Dim FileSize, ByteCounter, FileName, ChunkSize
>
> ChunkSize = 1024
> FileName = Trim(Request.QueryString("File"))
> FileSize =
> CreateObject("scripting.filesystemobject").GetFile(FileName).Size
>
> 'This is download
> Response.ContentType = "application/x-msdownload"
>
> 'Set file name
> Response.AddHeader "Content-Disposition", "attachment; filename="""
> &
> GetFileName(FileName) & """"
>
> 'Set Content-Length (ASP doen not set it when Buffer = False)
> Response.AddHeader "Content-Length", FileSize
> Response.CacheControl = "no-cache"
>
> Dim BA
> ' Set BA = CreateObject("ScriptUtils.ByteArray")'
> Set BA = Server.CreateObject("ADODB.Stream")
> BA.Open
> BA.LoadFromFile(FileName)
> zzz= BA.Read(100)
>
>
>
> "James Whitehead" <James@whitehead.co.uk> wrote in message
> news:#RZDLBv5EHA.3840@tk2msftngp13.phx.gbl...
> it
>
>
| |
| James Whitehead 2004-12-22, 2:47 am |
| Cool thanks will have a look
"Tim Williams" <saxifrax@pacbell*dot*net> wrote in message
news:eHoJpKx5EHA.2452@TK2MSFTNGP14.phx.gbl...
> Maybe try this code instead? See last listing on the page...
>
> http://www.4guysfromrolla.com/webtech/083100-1.shtml
>
> Tim
>
>
> "James Whitehead" <James@whitehead.co.uk> wrote in message
> news:ODkFGHw5EHA.3840@tk2msftngp13.phx.gbl...
>
>
|
|
|
|
|