Foros del Web » Programando para Internet » PHP »

Problema Forzando Descarga

Estas en el tema de Problema Forzando Descarga en el foro de PHP en Foros del Web. Intento forzar las descargas de archivo...el problema me surge cuando los archivos tienen espacios...si imprimo la bavariable GET me saca perfectamente el nombre del archivo...pero ...
  #1 (permalink)  
Antiguo 19/11/2010, 05:47
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Problema Forzando Descarga

Intento forzar las descargas de archivo...el problema me surge cuando los archivos tienen espacios...si imprimo la bavariable GET me saca perfectamente el nombre del archivo...pero si fuerzo su descarga solo lee hasta el primer espacio ocasionando un error de descarga...el script que uso es el siguiente:


He probado antes de pasarla a hacer urlencode y le añade simbolos + y al recibirla aqui hacer urldecode pero nada...solo lee hasta el primer jodido espacio

Código PHP:
<?php


$carpeta
="/home/content/f/r/i/frithnanstylo/html/subir/upload/";

 
if(
file_exists($carpeta.basename(($_GET['file'])))) {
    
$file=$carpeta.($_GET["file"]);
  
header("Content-Transfer-Encoding: binary");
  
header("Content-type: application/force-download");
  
header("Content-Disposition: attachment; filename=".basename($file));
  
header("Content-Length: ".filesize($file));
  
readfile($file);

} else {
?>
Usted esta accediendo a un archivo que no existe en la carpeta de descargas.
<?
}
?>
  #2 (permalink)  
Antiguo 19/11/2010, 06:39
 
Fecha de Ingreso: agosto-2010
Mensajes: 12
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problema Forzando Descarga

al principio del todo haz
$archivo = str_replace(" ", "%20", $_GET['file'])
y luego usa la variable $archivo, el caso es que sustituyas los espacios por %20
  #3 (permalink)  
Antiguo 19/11/2010, 07:17
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Problema Forzando Descarga

Nada sigue sin ir.

Código PHP:
<?php
include('/home/content/f/r/i/frithnanstylo/html/seguridad.php');
$carpeta="/home/content/f/r/i/frithnanstylo/html/includes/Menus/vice/subir/upload/";
 
 
$archivo str_replace(" ""%20",$_GET['file']);
 
if(
file_exists($carpeta.basename($archivo))) {
    
$file=$carpeta.$archivo;
  
header("Content-Transfer-Encoding: binary");
  
header("Content-type: application/force-download");
  
header("Content-Disposition: attachment; filename=".basename($file));
  
header("Content-Length: ".filesize($file));
  
readfile($file);

} else {
?>
Usted esta accediendo a un archivo que no existe en la carpeta de descargas.
<?
}
?>
  #4 (permalink)  
Antiguo 19/11/2010, 08:05
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problema Forzando Descarga

Saludos

Si el archivo lo obtienes correctamente desde get por que utilizas la función basename y no lo indicas directamente

Código PHP:
Ver original
  1. $file=$_GET['file'];
  2. header("Content-Disposition: attachment; filename=".$file);
  3. readfile($carpeta.$file)

Para mayor información Click Aquí
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Última edición por Nano_; 19/11/2010 a las 08:10 Razón: Unos ajustes que vi no estaban tampoco bien en la codificacion

Etiquetas: descargas
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 08:24.