Foros del Web » Programando para Internet » PHP »

php no detecta archivo para descargar del servidor

Estas en el tema de php no detecta archivo para descargar del servidor en el foro de PHP en Foros del Web. hola Foro, me tope con un problema a ultimo momento para mi pagina de descarga de script. al llamar al archivo "download.php (en la cual ...
  #1 (permalink)  
Antiguo 17/01/2014, 22:23
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 11 años, 3 meses
Puntos: 5
php no detecta archivo para descargar del servidor

hola Foro, me tope con un problema a ultimo momento para mi pagina de descarga de script. al llamar al archivo "download.php (en la cual se encarga de traerme el archivo zip para q el usuario lo descargue), me arroja el error de "el archivo no existe"; cuando en realidad si existe y esta bien escrito como debe figurar. Paso la data:

descargar.php
Código PHP:
<?php include('head.php')?>
  <!-- CONTENT -->
  <div id="content">
    <?php include('sidebar.php')?>
    <div id="right">
      <div id="welcome">
        <h1>&nbsp;</h1>
        <?php
          
require('admin/config/connect.php');
          
$cargar"SELECT * FROM $tabla1 ORDER BY id DESC LIMIT 1";
          
$respmysql_query($cargar);
          while(
$rowmysql_fetch_array($resp)){
              
$archivo$row['nombre'];
              
$ext$row['extension'];
              
$bytes$row['size'];
              
$release$row['contenido'];
              
$version$row['version'];
             }
             
mysql_close($connect);
             
             function 
bytesToSize($bytes,$precision2){ 
             
$kilobyte 1024
             
$megabyte $kilobyte 1024
             
$gigabyte $megabyte 1024;
             
$terabyte $gigabyte 1024;
             
             if((
$bytes >= 0)&&($bytes $kilobyte)){
                 return 
$bytes ' B';
                 }elseif
                 ((
$bytes >= $kilobyte)&&($bytes $megabyte)){
                     return 
round($bytes $kilobyte,$precision) . ' KB';
                     }elseif
                     ((
$bytes >= $megabyte)&&($bytes $gigabyte)){
                         return 
round($bytes $megabyte$precision) . ' MB';
                         }else{
                             return 
$bytes ' B';
            }
//Fin del If
            
}//Fin del If function
            
$sizebytesToSize($bytes); 
          
?>
          <a href="deposito/download.php?file=<?php echo $archivo.$ext ?>" title="Descargar <?php echo $archivo?>" target="_blank"><img src="images/descargar.gif" width="450" height="150" style="border:none; text-decoration:none;" /></a>        
        <p><strong>ARCHIVO: </strong><span style="font-size:14px;"><?php echo $archivo ?></span></p>     
        <p><strong>VERSIÓN: </strong><span style="font-size:14px;"><?php echo $version ?></span></p>       
        <p><strong>TAMAÑO: </strong><span style="font-size:14px;"><?php echo $size ?></span></p>  
        <p><strong>COMPRESIÓN: </strong><span style="font-size:14px;"><?php echo $ext ?></span></p>  
        <p><strong>RELEASE: </strong><span style="font-size:14px;"><?php echo $release ?></span></p>
                                  
        <div class="clear"></div>
      </div>
      <br/>
      <div id="block_left">
        <h1>Bloque Publicitario!</h1>
        <iframe width="300" height="250" frameborder="0" scrolling="no" allowtransparency="true" src='http://ads-plus.url.ph/ads_plus/ip2c_rand/300x250/random.php' hspace="2" vspace="2" marginheight="1" marginwidth="1"></iframe>
        </div>

      <div id="block_right">
        <h1>Bloque Publicitario!</h1>
        <iframe width="300" height="250" frameborder="0" scrolling="no" allowtransparency="true" src='http://ads-plus.url.ph/ads_plus/ip2c_rand/300x250/random.php' hspace="2" vspace="2" marginheight="1" marginwidth="1"></iframe>
      </div>
      <div class="clear"></div>
    </div>
  </div>
  <div class="clear"></div>
  <!-- CONTENT END -->
<?php include('footer.php')?>
<a href="deposito/download.php?file=<?php echo $archivo.$ext ?>" title="Descargar <?php echo $archivo?>" target="_blank">...</a> es el encargado de llevar el valor por GET hasta "deposito/download.php" q es donde esta alojado el archivo ZIP q deberia descargar.

download.php
Código PHP:
<?php
if (!isset($_GET['file']) || empty($_GET['file'])) {
 exit();
}
$root '';
$file basename($_GET['file']);
$path $root.$file;
$type '';
 
if (
is_file($path)) {
 
$size filesize($path);
 if (
function_exists('mime_content_type')) {
 
$type mime_content_type($path);
 } else if (
function_exists('finfo_file')) {
 
$info finfo_open(FILEINFO_MIME);
 
$type finfo_file($info$path);
 
finfo_close($info);
 }
 if (
$type == '') {
 
$type "application/force-download";
 }
 
// Definir headers
 
header("Content-Type: $type");
 
header("Content-Disposition: attachment; filename=$file");
 
header("Content-Transfer-Encoding: binary");
 
header("Content-Length: " $size);
 
// Descargar archivo
 
readfile($path);
} else {
 die(
"El archivo no existe.");
}
?>
Y este php se encarga de darme el nombre del archivo zip para descargar. En la variable $root="" estaria vacia porque en la misma carpeta se esta ejecutando el archivo php

Aca les dejo mi pagina con el links, le dan a descargar y les pondra q no existe (cuando en realidad si existe)
http://ads-plus.url.ph/descargar.php

Q es lo q puede estar fallando??
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #2 (permalink)  
Antiguo 17/01/2014, 23:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.512
Antigüedad: 9 años, 5 meses
Puntos: 957
Respuesta: php no detecta archivo para descargar del servidor

Imprime los valores de $archivo y $ext para que corrobores que son correctos. Por otro lado, en ese bucle con los resultados de la consulta, siempre asignarás el último registro al enlace, lo más adecuado sería que hagas un filtrado con el dato a buscar y luego lo asignas para su descarga.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 18/01/2014, 17:48
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 11 años, 3 meses
Puntos: 5
Respuesta: php no detecta archivo para descargar del servidor

Cita:
Iniciado por Alexis88 Ver Mensaje
Imprime los valores de $archivo y $ext para que corrobores que son correctos. Por otro lado, en ese bucle con los resultados de la consulta, siempre asignarás el último registro al enlace, lo más adecuado sería que hagas un filtrado con el dato a buscar y luego lo asignas para su descarga.

Saludos
bien hice lo q me pediste y este es lo q me devuelve "AdsPlus_v1.0.5_ES.zip" (y en el directorio donde esta el zip esta con el mismo nombre)
y con respecto a lo del ultimo registro, ese no es necesario, xq en esa pagina "descargar.php" solo me va a mostrar el ultimo registro actualizado, como links directo al scripts; en cambio en "versiones.php" en esa sección se mostrara todas las versiones existentes del script
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #4 (permalink)  
Antiguo 18/01/2014, 18:56
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 12 años, 2 meses
Puntos: 89
Respuesta: php no detecta archivo para descargar del servidor

Podras mostrarnos los resultados de:

Código PHP:
Ver original
  1. <?php
  2. echo __FILE__;
  3. echo $path;
__________________
Mono programando!
twitter.com/eguimariano
  #5 (permalink)  
Antiguo 18/01/2014, 19:12
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 11 años, 3 meses
Puntos: 5
Respuesta: php no detecta archivo para descargar del servidor

Cita:
Iniciado por SirDuque Ver Mensaje
Podras mostrarnos los resultados de:

Código PHP:
Ver original
  1. <?php
  2. echo __FILE__;
  3. echo $path;
esto me devolvio:
Código:
C:\xampp\htdocs\MI_SCRIPT\deposito\download.phpAdsPlus_v1.0.5_ES.zip
mmmmmm sera que no capto el metodo get el "?file="
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #6 (permalink)  
Antiguo 18/01/2014, 19:14
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 12 años, 2 meses
Puntos: 89
Respuesta: php no detecta archivo para descargar del servidor

Podrás ponerme el path completo del archivo "AdsPlus_v1.0.5_ES.zip" (La ruta absoluta del archivo)
__________________
Mono programando!
twitter.com/eguimariano
  #7 (permalink)  
Antiguo 18/01/2014, 19:24
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 11 años, 3 meses
Puntos: 5
Respuesta: php no detecta archivo para descargar del servidor

Cita:
Iniciado por SirDuque Ver Mensaje
Podrás ponerme el path completo del archivo "AdsPlus_v1.0.5_ES.zip" (La ruta absoluta del archivo)
Código:
C:/xampp/htdocs/MI_SCRIPT/deposito/AdsPlus_v1.0.5_ES.zip
y nada :( sera por las barras q en vez de ser "/" estan al revez???

EDITO: me exprese mal con las barras jajaja, (si estan bien)
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #8 (permalink)  
Antiguo 18/01/2014, 19:33
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 12 años, 2 meses
Puntos: 89
Respuesta: php no detecta archivo para descargar del servidor

Pone esto al principio de tu código:

Código PHP:
Ver original
  1. <?php
  2. $filename="C:\xampp\htdocs\MI_SCRIPT\deposito\AdsPlus_v1.0.5_ES.zip";
  3.  
  4. if(file_exists( $filename ))
  5. {
  6.     echo "el archivo existe<br>";
  7. }else{
  8.     echo "el archivo no existe<br>";
  9. }
  10. if(is_file( $filename ))
  11. {
  12.     echo "es un archivo.";
  13. }else{
  14.     echo "no es un archivo.";
  15. }
__________________
Mono programando!
twitter.com/eguimariano
  #9 (permalink)  
Antiguo 18/01/2014, 19:39
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 11 años, 3 meses
Puntos: 5
Respuesta: php no detecta archivo para descargar del servidor

Cita:
Iniciado por SirDuque Ver Mensaje
Pone esto al principio de tu código:

Código PHP:
Ver original
  1. <?php
  2. $filename="C:\xampp\htdocs\MI_SCRIPT\deposito\AdsPlus_v1.0.5_ES.zip";
  3.  
  4. if(file_exists( $filename ))
  5. {
  6.     echo "el archivo existe<br>";
  7. }else{
  8.     echo "el archivo no existe<br>";
  9. }
  10. if(is_file( $filename ))
  11. {
  12.     echo "es un archivo.";
  13. }else{
  14.     echo "no es un archivo.";
  15. }
Código:
el archivo no existe
no es un archivo.
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #10 (permalink)  
Antiguo 18/01/2014, 19:43
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 12 años, 2 meses
Puntos: 89
Respuesta: php no detecta archivo para descargar del servidor

Remplazalo por:

C:/xampp/htdocs/MI_SCRIPT/deposito/AdsPlus_v1.0.5_ES.zip

./AdsPlus_v1.0.5_ES.zip

Y anda jugando hasta encontrar la solución. Cuando la tengas vemos en donde esta el error.
__________________
Mono programando!
twitter.com/eguimariano
  #11 (permalink)  
Antiguo 20/01/2014, 12:26
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 11 años, 3 meses
Puntos: 5
Respuesta: [SOLUCIONADO] php no detecta archivo para descargar del servidor

Cita:
Iniciado por SirDuque Ver Mensaje
Remplazalo por:

C:/xampp/htdocs/MI_SCRIPT/deposito/AdsPlus_v1.0.5_ES.zip

./AdsPlus_v1.0.5_ES.zip

Y anda jugando hasta encontrar la solución. Cuando la tengas vemos en donde esta el error.
listo solucionado, era problema de un campo desde la BD
Muchisimas gracias en tu aporte Sir
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.

Etiquetas: geturl, metodos
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 07:40.