Foros del Web » Programando para Internet » PHP »

Script para forzar descarga

Estas en el tema de Script para forzar descarga en el foro de PHP en Foros del Web. Hola, esto es un script para forzar descargas y tengo un problema ya que no se donde pongo el nombre del archivo que quiero descargar. ...
  #1 (permalink)  
Antiguo 14/11/2006, 14:59
(Desactivado)
 
Fecha de Ingreso: junio-2006
Mensajes: 36
Antigüedad: 17 años, 9 meses
Puntos: 0
Mensaje Script para forzar descarga

Hola, esto es un script para forzar descargas y tengo un problema ya que no se donde pongo el nombre del archivo que quiero descargar. Quiero saber donde coloco el nobre del archivo gracias.

Código PHP:
<?php

$filename 
$_GET['file'];

// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
  
ini_set('zlib.output_compression''Off');

// addition by Jorg Weske
$file_extension strtolower(substr(strrchr($filename,"."),1));

if( 
$filename == "" 
{
  echo 
"<html><title>Eldisplay.Es</title><body>ERROR: download file NOT SPECIFIED. USE force-download.php?file=filepath</body></html>";
  exit;
} elseif ( ! 
file_exists$filename ) ) 
{
  echo 
"<html><title>Eldisplay.Es</title><body>ERROR: File not found. USE force-download.php?file=filepath</body></html>";
  exit;
};
switch( 
$file_extension )
{
  case 
"pdf"$ctype="application/pdf"; break;
  case 
"exe"$ctype="application/octet-stream"; break;
  case 
"zip"$ctype="application/zip"; break;
  case 
"doc"$ctype="application/msword"; break;
  case 
"xls"$ctype="application/vnd.ms-excel"; break;
  case 
"ppt"$ctype="application/vnd.ms-powerpoint"; break;
  case 
"gif"$ctype="image/gif"; break;
  case 
"png"$ctype="image/png"; break;
  case 
"jpeg":
  case 
"jpg"$ctype="image/jpg"; break;
  default: 
$ctype="application/force-download";
}
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers 
header("Content-Type: $ctype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();

?>
  #2 (permalink)  
Antiguo 14/11/2006, 15:06
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
$filename = $_GET['file'];

te esta indicado que el nombre del archivo se recibe mediante un formulario con el campo de nombre "file".

Saludos
__________________
Hospedaje Web al mejor costo!
  #3 (permalink)  
Antiguo 14/11/2006, 15:27
(Desactivado)
 
Fecha de Ingreso: junio-2006
Mensajes: 36
Antigüedad: 17 años, 9 meses
Puntos: 0
visita esto http://eldisplay.es/forzador.php a ver si me puedes ayudar un poco mas
  #4 (permalink)  
Antiguo 14/11/2006, 15:46
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
es lo que te digo:

$filename = $_GET['file'];

en la carpeta donde tienes el forzador.php debes subir archivos varios ejemplo: archivo.zip posteriormente para abajarlo deberias teclea: http://eldisplay.es/forzador.php?file=archivo.zip

pero antes debes crear un formulario ejemplo:

ejemplo, guardalo como form.html
Código HTML:
<form action="forzador.php">
<input name="file" type="text"><br>
<input name="Descargar" type="submit">
</form> 
espero te sirva. Saludos
__________________
Hospedaje Web al mejor costo!
  #5 (permalink)  
Antiguo 14/11/2006, 21:41
(Desactivado)
 
Fecha de Ingreso: junio-2006
Mensajes: 36
Antigüedad: 17 años, 9 meses
Puntos: 0
me podrias alterar tu el codigo. pq es que soy nuevo y no te entendi nada. gracias
  #6 (permalink)  
Antiguo 15/11/2006, 04:20
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 3 meses
Puntos: 0
Cita:
Iniciado por el_killer360 Ver Mensaje
Hola, esto es un script para forzar descargas y tengo un problema ya que no se donde pongo el nombre del archivo que quiero descargar. Quiero saber donde coloco el nobre del archivo gracias.
PUES MIRA...si solo quieres llamar a este script sin venir desde un enlace o de un formulario solo reemplaza la siguiente linea con el nombre del achivo...

Código PHP:

$filename 
"mi_archivo_para_descargar.txt"// por ejemplo 
Si quieres llegar al forzador desde un enlaza usa http://eldisplay.es/forzador.php?file=archivo.zip pero entonces recuerda dejar el codigo de forzador.php como estaba originalmente !!!

No es necesario que uses un formulario para llegar a esta pagina, ten en cuenta que si usas el codigo sin modificar, puedes linkear como te dije anteriormente, teniendo en cuenta que justamente el uso de $filename = $_GET['file']; significa que todo lo que pongas despues de forzador.php?file=mi_archivo.zip sera el archivo a descargar, fijate que "file" es la variable que se propaga atravez de la url. Espero ser claro... sino nos dices ...
__________________
:) Fernando Dichiera (:
[email protected]
  #7 (permalink)  
Antiguo 15/11/2006, 04:25
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
$filename = "mi_archivo_para_descargar.txt"; // por ejemplo
Creo que ponerlo así seria un desperdicio.. para que tanto script si solo se pondria un archivo.

Aqui te va la modificación que te he dejado:

Crea una pagina con el nombre de descarga.html entre las tags <body></body> pega lo siguiente:

Código HTML:
<form action="forzador.php"> <input name="file" type="text"><br> <input name="Descargar" type="submit"> </form> 
Sube la página al mismo directorio en donde esta forzador.php. Ingresa a http://...../descarga.html y en el campo de texto introduce el nombre de cualquier archivo con su extensión(lógicamente el archivo debe estar en emismo directorio que forzador.php y descarga.html) y verás que se descargar el archivo.

Saludos
__________________
Hospedaje Web al mejor costo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:48.