elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Descargas de archivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Descargas de archivos  (Leído 5,658 veces)
Fireball-CH

Desconectado Desconectado

Mensajes: 131


Rebelblade 2009


Ver Perfil
Descargas de archivos
« en: 11 Agosto 2007, 08:49 am »

Hola!

Tengo una duda...
Tengo 1 archivo llamado video.3gp, ¿cómo puedo hacer para que cuando el usuario haga click en el link Descargar se abra directamente la ventanita de descarga (donde escribe el nombre del archivo como lo va a guardar)?

Y cómo puedo hacer eso con imágenes?
Es decir, si pongo:
  <a href="imagen.gif" target="_self">Haz click aquí para descargar la imagen</a>
no se va a descargar la imagen, se va a abrir en el explorador... ¿cómo puedo hacer para que se abra la ventana de descarga y guarde la imagen?

Espero que me haya explicado.


En línea

Video en el que explico cómo instalar y configurar Apache 2.0.54, PHP 5.0.0 y MySQL 4.0.20: http://www.mediafire.com/?fevmmnlyzzd
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Descargas de archivos
« Respuesta #1 en: 11 Agosto 2007, 11:17 am »

Forza la descarga:

Código:
header("Content-type: application/force-download");

Saludos


En línea

Fireball-CH

Desconectado Desconectado

Mensajes: 131


Rebelblade 2009


Ver Perfil
Re: Descargas de archivos
« Respuesta #2 en: 12 Agosto 2007, 05:46 am »

Ing_Amc, no se cómo utilizar eso... ¿cómo le hago?

En ver_archivos.php tengo la lista de archivos a descargar, los links son más o menos así:

  <a href="download.php?file=../pictures/<?php echo $picture; ?>" target="_self">Descargar</a>

Y en download.php tengo el sig. código:

<?php
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($_GET["file"]));
header("Content-Disposition: filename=".basename($_GET["file"]));
?>

Pero los archivos se descargan con error! En las imágenes me dice "Vista previa no disponible", no puedo abrir los temas (.thm) y no puedo ver videos (.3gp). En pocas palabras, cualquier archivo que descargo se descarga con un peso de 0 KB!!

Con Internet Explorer ni siquiera la ventanita de descarga me aparece...




SOLUCIÓN :D
Bueno Ing_Amc, aquí dejo una solución (funciona con Internet Explorer y Firefox):
Los links en ver_archivos.php deben ser algo así:

  <a href="download.php?file=../pictures/hacker.gif" target="_self">Descargar</a>

El código de download.php debe ser:

  <?php
  header("Content-Disposition: attachment; filename=" . $_GET["file"]);
  header("Content-Type: application/octet-stream");
  header("Content-Length: " . filesize($_GET["file"]));
  readfile($_GET["file"]);
  ?>

Por cierto, el orden de los header() no afecta, verdad?
Aún así, me gustaría que me explicaras cómo usar application/force-download, por favor. Gracias.
« Última modificación: 12 Agosto 2007, 06:56 am por Fireball-CH » En línea

Video en el que explico cómo instalar y configurar Apache 2.0.54, PHP 5.0.0 y MySQL 4.0.20: http://www.mediafire.com/?fevmmnlyzzd
Fireball-CH

Desconectado Desconectado

Mensajes: 131


Rebelblade 2009


Ver Perfil
Re: Descargas de archivos
« Respuesta #3 en: 12 Agosto 2007, 06:19 am »

I'm sorry for writing too much :P

Ing_Amc, creo que me hacía falta la función readfile() cuando usaba application/force-download

Entonces el código me queda así:
<?php
header("Content-type: application/force-download");
header("Content-Disposition: filename=" . basename($_GET["file"]));
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($_GET["file"]));
readfile($_GET["file"]);
?>

Pero en IE sigue sin abrirme la ventanita de descarga. Ahora sólo la abre con los archivos .thm (con Firefox sí funciona). Mejor me quedo con este código:
<?php
header("Content-Disposition: attachment; filename=" . $_GET["file"]);
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize($_GET["file"]));
readfile($_GET["file"]);
?>
:D (funciona con los 2 exploradores). Saludos!
En línea

Video en el que explico cómo instalar y configurar Apache 2.0.54, PHP 5.0.0 y MySQL 4.0.20: http://www.mediafire.com/?fevmmnlyzzd
Fireball-CH

Desconectado Desconectado

Mensajes: 131


Rebelblade 2009


Ver Perfil
Re: Descargas de archivos
« Respuesta #4 en: 12 Agosto 2007, 06:55 am »

Ing_Amc, tengo un problema con el código que te dije que me quedaba!!

El link es <a href="download.php?file=../pictures/hacker.gif" target="_self">Descargar</a>...
Alguna persona mala puede escribir en la URL:
  http://www.miSitio.com/users/download.php?file=archivo_a_descargar.php
el problema es que sí se descarga ese archivo!!

¿Qué puedo hacer? En mi sitio sólo quiero que se descarguen archivos .gif, .jpg, .png, .thm y .3gp.

Los .gif, .jpg y .png están en http://www.miSitio.com/pictures
Los .thm están en http://www.miSitio.com/themes
Los .3gp están en http://www.miSitio.com/videos
En línea

Video en el que explico cómo instalar y configurar Apache 2.0.54, PHP 5.0.0 y MySQL 4.0.20: http://www.mediafire.com/?fevmmnlyzzd
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Descargas de archivos
« Respuesta #5 en: 12 Agosto 2007, 09:47 am »

Código:
download.php?file=../pictures/hacker.gif

Así te van hacer RFI. Referente a lo otro mete tus archivos a una base de datos y los llamas por un ID.

Si quieres evitar el hotlink revisa el referer y los bloqueas, si acceden directamente (sin referer) igual.

Suerte
En línea

Fireball-CH

Desconectado Desconectado

Mensajes: 131


Rebelblade 2009


Ver Perfil
Re: Descargas de archivos
« Respuesta #6 en: 18 Agosto 2007, 19:51 pm »

Gracias, Ing_Amc!
Saludos!
En línea

Video en el que explico cómo instalar y configurar Apache 2.0.54, PHP 5.0.0 y MySQL 4.0.20: http://www.mediafire.com/?fevmmnlyzzd
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines