![]() |
forcing asp download problems with large files
I use this code to force the download files:
<% file = Request.QueryString("file") path=Request.QueryString("dir")+file ContentType = "application/x-msdownload" Response.Buffer = True Const adTypeBinary = 1 Response.Clear Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile Server.MapPath(path) ContentType = "application/octet-stream" Response.AddHeader "Content-Disposition", "attachment; filename=" & file Response.Charset = "UTF-8" Response.ContentType = ContentType Response.BinaryWrite objStream.Read Response.Flush objStream.Close Set objStream = Nothing %> it works very well ! But I have a problem with files size large ... there is anyone to help me? |
It depends on where your problem is.
If the file is too large to load into the stream with LoadFromFile then there is no easy answer. If the problem is simply that your Response buffer is too small, then it's fixable. objStream.Read can take one argument: The number of bytes to read. So you can do this in chunks. EXAMPLE ONLY: In place of Code:
Response.BinaryWrite objStream.ReadCode:
CONST CHUNK = 100000 ' experiment to get best chunk size |
solved !
In place of Response.BinaryWrite objStream.Read I tried Do While Not objStream.EOS Response.BinaryWrite objStream.Read(4096) Response.Flush Loop it works perfectly |
Yes, same idea as what I gave. Simpler coding, but would be same result: Just do it in "chunks". But 4096 is a very tiny chunk size. Not very efficient. You really should try increasing the chunk size *A LOT* to find the optimum size.
|
| All times are GMT +1. The time now is 03:33 AM. |
Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.