Descarga de ficheros grandes en ASP

Cuando estamos enviando ficheros grandes desde ASP, hay que tener en cuenta que el IIS tiene por defecto un límite de buffer de respuesta de 4MB. En caso de superar ese límite, veríamos el error «Response buffer limit exceeded» (Límite de búfer de respuesta superado).

Si tenéis problemas con este límite, una solución puede ser utilizar el objeto ADODB.Stream para ir leyendo y enviando el archivo en trocitos:

Response.buffer = true
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open
objStream.LoadFromFile nombreFichero

while not objstream.EOS                            
 Response.BinaryWrite(objStream.Read(1024*256))
 response.flush
wend

objStream.Close
Set objStream = Nothing

La otra solución, aunque menos recomendable por lo general, puede ser incrementar el límite por defecto de 4MB del buffer de respuesta del IIS. Para ello se pueden seguir las siguientes instrucciones:

  1. Abrimos una línea de comandos. Para ello vamos a Inicio -> Ejecutar y escribimos cmd.
  2. A continuación, escribimos el siguiente comando para dirigirnos a la ruta donde se encuentran los scripts de administraión del IIS:
    CD /d %systemdrive%\inetpub\adminscripts
  3. Por último, escribimos lo siguiente:
    cscript.exe adsutil.vbs SET w3svc/aspbufferinglimit LimitSize

    Donde LimitSize es el tamaño en bytes del buffer que queremos modificar. Por ejemplo el valor 10485760 equivale a 10MB.

  4. Para confirmar que el tamaño del buffer se ha modificado correctamente se puede utilizar el siguiente comando:
    cscript.exe adsutil.vbs GET w3svc/aspbufferinglimit
Nuestra puntuación
Twittear
Compartir
Compartir
Pin