Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
Bajar un fichero

Mi primer post en este foro.

Tengo un fichero en el servidor que, mediante un botón quiero bajar a mi disco duro.

He estado buscando en la documentación de http://es2.php.net/manual/es/index.php y he encontrado el comando copy($source, $dest). Pero este comando me dice: "Warning: Unable to create 'c:/urls.txt': No such file or directory in /home/virtual/.../php/urls.php on line 41", o sea, que está intentando copiar sobre el propio HD del servidor. A mi me interesa bajarlo a mi disco duro.

¿Alguien sabe cómo se hace?
Responder Con Cita
  #2  
Antiguo 18-09-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Esta parece pregunta de javascript:

<input type='button' value='bájalo' onclick='location.href="tu archivo"'>

Ahora que sí insistes en php podría ser:

<input type='button' value='bájalo' onclick='bajalo.php'>

El archivo bajalo.php contendría:

Código PHP:
header('location: tu archivo'); 
// Saludos
Responder Con Cita
  #3  
Antiguo 18-09-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
Vaya, Gran Señor de Teotihuacán, probaré esto y comentaré. Esto quiere decir que: ¿nos falta un foro de javascript? ¿o lo dejamos en éste?, ¿o es el de java? Como nunca antes había entrado en esta sección pues no lo sé.

Gracias (sirva como respuesta a los dos temas)
Responder Con Cita
  #4  
Antiguo 22-09-2003
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Nunca habias entrado en esta seccion ??? .... no se a mi como que me suenas de algo.

Otra opcion algo mas currada y que sirve para ocultar la situacion del archivo, seria la siguiente:

Código PHP:
    header"Content-Type: ".$tipo );
    
header"Content-Length: ".$tamano );
    
header"Content-Disposition: filename=".$nombre_fichero );
    
passthru("cat '".$capeta."/".$nombre_fichero."'"); 
De esta forma puedes ocultar la localizacion real del archivo, modificar su nombre y alguan que otra cosa mas que ahora no se me ocurren.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #5  
Antiguo 22-09-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
Hey, esta última me gusta más, ya que no se trata de un fichero de dominio público sino privado, y con el método de román hago público todo el path del fichero.

PD: en caso de ser un fichero a descargar por cualquiera, sí que lo hubiera hecho con un link, tal y como tengo en la sección de descargas. Pero no es eso lo que yo quiero.

Gracias kayetano.
Responder Con Cita
  #6  
Antiguo 23-09-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
Después de varias pruebas, el método que he tenido que utilizar es el proporcionado por román. Lo único que pasa es que no es exactamente lo que yo quería puesto que ese método lo que te abre es una ventana del navegador con el contenido del fichero, luego tienes que darle al navegador en la opción "guardar como..." y yo lo que pretendía es que se guardara directamente en el disco duro, sin mostrarse el contenido en pantalla.

Se trata de un fichero TXT, que puede llegar a ser muy grande. De momento he empleado este método.

La opción de poner un link no me es útil ya que en este caso, como algún buscador apunte a dicho fichero, puedo organizar un cacao en los buscadores impresionante. Además, este fichero está protegido por contraseña, si pongo el link, pierdo la contraseña.

Bueno, gracias por la ayuda. Seguiré probando.
Responder Con Cita
  #7  
Antiguo 23-09-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El hecho de que sea un archivo TXT es lo que ocasiona que el navegador lo despliegue en lugar de bajarlo.

Aquí te pongo un truco que parece funconar como deseas.

Vamos a suponer que tu archivo se llama "obiwuan.txt".

En la página desde donde deseas bajar el archivo pones un enlace (o botón si deseas confirmación) al script "obiwuan.php". En este script pones:

Código PHP:
<?
  header
("Content-Type: text/html/force-download"); 
  
header("Content-Disposition: filename=obiwuan.txt");
  include(
obiwuan.txt');
?>
force-download obliga al archivo a bajarse (en este caso "obiwuan.php") Esto es necesario para que el include no se ejecute y te lo despliegue en el navegador.

El segundo header establece el nombre del archivo. Si no pones nada el archivo se bajará como "obiwuan.php" y no como "obiwuan.txt"

¡Listo! Cuando el usuario haga click aparecerá directamente la ventana de guardar archivo.

Además, lo bueno es que con "include" puedes bajar un archivo que coloques en carpetas fuera del árbol de documentos del servidor de manera que queda más protegido y de hecho puedes forzar el nombre que quieras, no tiene que coincidir con el real.

// Saludos
Responder Con Cita
  #8  
Antiguo 23-09-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
Esto es lo que he puesto:
Código:
if ($boton=="Descargar") {
   header("Content-Type: text/html/force-download");
   header("Content-Disposition: filename=este.txt");
   include ('este.txt');
   exit;
}
y lo que ocurre es lo siguiente:

Netscape: ¡perfecto!
IE: descarga sin preguntar nombre, ni siquiera sé dónde lo mete
Opera: muestra el contenido del fichero

¡Menuda sorpresa!

Así que lo tendré que dejar a sabiendas que sólo funciona correcto con el Netscape.

NOTA: El exit es necesario porque el Opera sigue procesando el script, y hay mucho más que eso en la página.

Thenk iu, roman
Responder Con Cita
  #9  
Antiguo 23-09-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Con qué versión de IE lo probaste? Con la versión 6 funciona. En la página de PHP mencionan algunos problemas con IE en la versión 5. No sé si tenga mucho que ver pero prueba agregar el header:

header("Cache-control: private");

También prueba cambiando el header de "Content-dispositon" a

header("Content-Disposition: attachment; filename=este.txt");

y quita el de force-download.

// Saludos
Responder Con Cita
  #10  
Antiguo 01-08-2007
kEpEx kEpEx is offline
Registrado
 
Registrado: ago 2007
Ubicación: Monerrey, NL, Mx
Posts: 3
Poder: 0
kEpEx Va por buen camino
Post Forma Correcta Descargar Archivo

Estos son los headers que deben de llevar para descargar la actual pagina como un txt.

Código PHP:
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=\"nombre-archivo.txt\""); 
Se debe recordar que los saldos de linea para windows son: "\n\r" y no html ni solo \n

Tambien si se tiene algun otro archivo en otra parte que se quiere descargar por medio de ese script, se envian los mismos headers de arriba (poniendo el nombre y la extencion del archivo correctos en vez de .txt)

Código PHP:
readfile($ruta-al-archivo); 

Esto es muy util cuando se valida el permiso de ciertos usuarios a descargar archivos, asi no se muestra la ruta del archivo, si no que siempre el script es la ruta, por ejemplo download_file.php?id=332

Espero les sirva.

http://keflog.com
http://keflog.com/sex
Responder Con Cita
  #11  
Antiguo 15-08-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

¿Te has parado a mirar de cuando es ese post?
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #12  
Antiguo 15-08-2007
kEpEx kEpEx is offline
Registrado
 
Registrado: ago 2007
Ubicación: Monerrey, NL, Mx
Posts: 3
Poder: 0
kEpEx Va por buen camino
No solo me importan los autores

Claro,

Pero este foro se encuentra dentro de los primeros cuando buscas el correcto keyword en google.

Entonces, toda esa gente que entra como yo, aun busca la pregunta.

No me preocupo por los autores de eso, si no por dejar la informacion correcta alas personas que siguen entrando.

Creo que si se la respuesta, y estoy viendo que ahi, lo ultimo que dejaron es algo incorrecto, lo mejor es que lo diga. Espero ayudar a gente que lo necesite.

Porcierto, visita mi webpage: http://keflog.com

Saludos
Responder Con Cita
  #13  
Antiguo 16-08-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Con el tema de la fecha quiero dar a entender que es muy posible que durante los últimos 4 años se haya tratado este tema en otros hilos proporcionando nuevas y mejores respuestas, por ponerte un ejemplo:
http://www.clubdelphi.com/foros/showthread.php?t=28945
http://www.clubdelphi.com/foros/showthread.php?t=34897
http://www.clubdelphi.com/foros/showthread.php?t=21189
http://www.clubdelphi.com/foros/showthread.php?t=44467
En estos hilos (algo mas actuales) se trató el mismo tema, o parecido, y se propusieron diferentes soluciones, entre ellas la que tu propones en un hilo de 2003.

Estoy de acuerdo en que si buscas en google por una palabra clave es muy posible que te aparezca este u otro hilo del clubdelphi (somo los mejores ), pero siempre es mejor que hagas uso de la herramienta de búsqueda de clubdelphi en la que posiblemente te aparecerán respuestas más actuales con soluciones más modernas y depuradas.

De todas formas se agradece mucho tu colaboración y espero poder verte más a menudo por el foro ayudando y dando soluciones a todos los foristas.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #14  
Antiguo 16-08-2007
kEpEx kEpEx is offline
Registrado
 
Registrado: ago 2007
Ubicación: Monerrey, NL, Mx
Posts: 3
Poder: 0
kEpEx Va por buen camino
:)

muchas gracias

La verdad no suelo ser muy activo en los foros, solo cuando pregunto..

Pero cuando me encuentro con algo, en donde yo se la respuesta y alguna vez me encontre buscandola.. pues ahi le escribo contundentemente.. sin dudas..

pero bueno, gracias por la invitacion.

y que bueno que esten al tanto de los movimientos de su sitio.. por eso son e los mejores

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:10:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi