Descarga de fichero II

Hola he visto el código que me pasaste para lo de la descarga de ficheros, el tema es que he intentado modificarlo para que se adapte a mis necesidades pero no me funciona. El problema es que el fichero a descargar sera diferente cada vez así que se le paso el nombre en un requests. Querystring de la manera siguiente <A HREF=descarga.asp? Fichero=nombrefichero ... He hecho un seguimiento del nombre del fichero y parece ir todo bien hasta la instrucción
Response.AddHeader "content-disposition", "attachment;filename=" & sFileName
a partir de aqui el nombre del fichero desaparece y en la descarga se baja un fichero vacio. Que es lo que esta pasando?
Saludos

1 respuesta

Respuesta
1
Es correcto lo que haces, lo de pasar la variable, solo que tienes que tener la precaución de recuperar ese valor. En las lineas:
Elseif request("b") <> "" then
sFileName = request("b")
En vez de "b", deberás de poner el nombre de la variable que le pasas, según me indicas será "fichero".
Pruébalo así y utiliza echo $fichero para ver si le llega el valor a esa página.
Animo que ya queda poco!.
Sigue sin funcionar, he cambiado la variable b por fichero que es la mía, pero al hacer el response.addheader no ajunta el fichero deseado, y la variable sfilename tiene el valor que me interesa.
Saludos
A ver, lo he probado aquí y a mi me funciona, te paso el código de la página. El archivo llamalo borrar2.asp, para hacer la prueba, y en el link, pon el archivo que te interese. A mi me funciona!.:
<%@ Language=VBScript %>
<%
if request.querystring("b") <> "" THEN
%>
<%
Dim objXMLHTTP, objXml, sFileName, vFileName
on error resume next
Set objXml = Server.CreateObject("Microsoft.XMLHTTP")
sFileName = request.querystring("b")
objXml.Open "GET", sFileName, False
objXml.Send
if instr(sFileName,"/") <> 0 then
vFileName = split(sFileName,"/")
sFileName = lcase(vFileName(ubound(vFileName)))
end if
' Give the file a name
Response.AddHeader "content-disposition", "attachment;filename=" & sFileName
if instr(sFileName,".") <> 0 then
vFileName = split(sFileName,".")
sFileName = lcase(vFileName(ubound(vFileName)))
end if
' Tell the browser what it is
Response.ContentType = "application/" & sFileName
' Send the picture to the browswer
Response.BinaryWrite objXml.ResponseBody
Set objXml = Nothing
%>
<%
END IF
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<a href="borrar2.asp?b=texto1.txt">Ejemplo de descarga</a>
</body>
</html>
Pues no me funciona, bueno lo hace a medias, se descarga el propio fichero borrar2.asp
Me alegro hayas encontrado una solución adecuada!.
En cualquier caso, te importaría valorarme la pregunta para cerrarla, sino otras personas no pueden preguntar.
Si la ventana se habré, pero al descargar el fichero o esta en blanco o sale el código HTML del fichero borrar2.asp
De todas maneras ya he encontrado la solución por otro sitio básicamente es lo mismo solo que hay que añadir la lineanse.AddHeader "Content-Length", strFileSize
Lo puedes ver en esta web
http://www.xlwebmasters.com/doc3.php?id=659&op=asp&ap=Directorio&PHPSESSID=dd74ac186a9f1e8b34728f5c9a411b53
Gracias por tu interés al final he conseguido lo que quería
A ver si me he equivocado al copiar y pegar, pero la verdad es que no lo entiendo, ¿no se te abre una ventana diciendo que se va a bajar el archivo texto1.txt?...
Te lo pongo de nuevo, por si acaso. Espero noticias!:
<%@ Language=VBScript %>
<%
if request.querystring("b") <> "" THEN
%>
<%
Dim objXMLHTTP, objXml, sFileName, vFileName
on error resume next
Set objXml = Server.CreateObject("Microsoft.XMLHTTP")
sFileName = request.querystring("b")
objXml.Open "GET", sFileName, False
objXml.Send
if instr(sFileName,"/") <> 0 then
vFileName = split(sFileName,"/")
sFileName = lcase(vFileName(ubound(vFileName)))
end if
' Give the file a name
Response.AddHeader "content-disposition", "attachment;filename=" & sFileName
if instr(sFileName,".") <> 0 then
vFileName = split(sFileName,".")
sFileName = lcase(vFileName(ubound(vFileName)))
end if
' Tell the browser what it is
Response.ContentType = "application/" & sFileName
' Send the picture to the browswer
Response.BinaryWrite objXml.ResponseBody
Set objXml = Nothing
%>
<%
END IF
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<a href="borrar2.asp?b=texto1.txt">Ejemplo de descarga</a>
</body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas