Problema Codigo descarga fichero

18/10/2005 - 12:07 por Jose | Informe spam
Hola amigos,

tengo un problema bastante grave con el siguiente codigo. Se usa para que
sale el dialogo de descarga de un fichero
El problema es que la ventana de Abrir/Guardar aparece, pero no se abre ni
se descarga nada.

Alguien puede orientarme?

Gracias


Dim f,strFilePath, strFileSize, strFileName
Const adTypeBinary = 1


If (Existe_Archivo(Fichero)) Then
f=Fichero

strFileSize = Tam_Archivo(f,false)
strFilePath = Server.MapPath(f)
strFileName = Nombre_Archivo(strFilePath)




strFileType = lcase(Right(strFileName, 4))

Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case ".pdf"
ContentType="application/pdf"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select

Response.Buffer = True
Response.Clear

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath

Response.ContentType = ContentType
Response.AddHeader "Content-Disposition", "attachment; filename=""" &
strFileName & """"

Response.AddHeader "Content-Length", strFileSize

Response.Charset = "UTF-8"


Response.BinaryWrite objStream.Read
'Response.Flush

objStream.Close
Set objStream = Nothing



End If
 

Leer las respuestas

#1 richi
18/10/2005 - 15:05 | Informe spam
Antes si funcionaba,

pero de un día para otro, parece que ha dejado de funcionar.

El flush comentado es porque he estado tocando y posiblemente haya mandado
un codigo "retocado"

probaré lo que me dices, pero de todas formas he leido que usar el objeto
objStream requiere que el usuario anonimo tenga permisos de administrador,
si esto es cierto cabe la posibilidad que mi hosting haya tocado algo en los
permisos y este codigo ya no funcione, no?

Saludos y gracias.

"Matías Iacono" escribió en el mensaje
news:
Antes te funcionaba?

Lo posible que veo es que, por un lado tienes comentado el Flush, y a
continuacion haces un close y un set a nothing.

Como ASP solo trabaja en el lado del servidor, todo este codigo solo se
ejecuta cuando la pagina aun no ha sido cargada, o sea, cuando aun no se
envio los datos al cliente, entonces, como tienes un buffer en true, esto
hace que nada sea enviado al cliente hasta que la pagina no termina con
todo su codigo, lo que hace, en definitiva, que antes de poder ser enviado
el archivos, cierres el objeto y lo destruyas.

Posibles soluciones, descomenta el flush.

Saludos.

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"Jose" escribió en el mensaje
news:OMHGq%

Hola amigos,

tengo un problema bastante grave con el siguiente codigo. Se usa para que
sale el dialogo de descarga de un fichero
El problema es que la ventana de Abrir/Guardar aparece, pero no se abre
ni se descarga nada.

Alguien puede orientarme?

Gracias


Dim f,strFilePath, strFileSize, strFileName
Const adTypeBinary = 1


If (Existe_Archivo(Fichero)) Then
f=Fichero

strFileSize = Tam_Archivo(f,false)
strFilePath = Server.MapPath(f)
strFileName = Nombre_Archivo(strFilePath)




strFileType = lcase(Right(strFileName, 4))

Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case ".pdf"
ContentType="application/pdf"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select

Response.Buffer = True
Response.Clear

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath

Response.ContentType = ContentType
Response.AddHeader "Content-Disposition", "attachment; filename=""" &
strFileName & """"

Response.AddHeader "Content-Length", strFileSize

Response.Charset = "UTF-8"


Response.BinaryWrite objStream.Read
'Response.Flush

objStream.Close
Set objStream = Nothing



End If








Preguntas similares