Download Large Binary Files via ASP
  • First get file size.
  • Create the file pointer.
  • Load and write binary chunks.
  • /* Download Large Binary Files via ASP:  
          Take large binary files and send them down through the a browser.
          2007-2008, Karland International (
          Permission to use, copy, modify, distribute and sell this software and its 
          documentation for any purpose is hereby granted without fee, provided that the 
          above copyright notice appears in all copies and that both that copyright notice 
          and this permission notice appear in supporting documentation. Karland International 
          makes no representations about the suitability of this software for any purpose. 
          It is provided "as is" without express or implied warranty.
    	Response.Buffer = True
    	Const adTypeBinary = 1
    	Dim objFile
    	Dim iFileSize, iChunkSize, iFileLeft
    	Dim strFilePath
    	strFilePath = "C:\ExcelFiles\Excel1.xls" 'This is the path to the file on disk. 
    	'Set the content type to the specific type that you are sending.
    	Set objFile = objFSO.GetFile(strFilePath)
    	'get file size
    	iFileSize = objFile.Size
    	iFileLeft = iFileSize
    	'set file name
    	Response.AddHeader "Content-Disposition", "attachment; filename=" & objFile.Name
    	'set file size
    	Response.AddHeader "Content-Length", iFileSize
    	'set file type
    	Response.ContentType = "application/x-msexcel"
    	Set objStream = Server.CreateObject("ADODB.Stream")
    	objStream.Type = adTypeBinary
    	objStream.LoadFromFile strFilePath
    	'do until end of stream or client disconnects
    	Do While Not objStream.EOS Or Not Response.IsClientConnected
    		'if the chunk size is larger than the size of data left to be sent, shrink the chunk size
    		If iChunkSize > iFileLeft Then iChunkSize = iFileLeft
    		'write to browser
    		'flush the response buffer or it will not go past 4MB
    		'figure out whats left of the file
    		iFileLeft = iFileLeft - iChunkSize
    	'clean up
    	Set objStream = Nothing
    	Set objFile = Nothing