Foros del Web » Programando para Internet » PHP »

Download de archivos con php

Estas en el tema de Download de archivos con php en el foro de PHP en Foros del Web. Hola que tal hice un link en mi pagina, donde se muestran imagenes, para poder bajar archivos por ejemplo: Código PHP: $sql  =  "select archivo_adjunto, ext from downloades where id=" . ...
  #1 (permalink)  
Antiguo 06/06/2008, 08:07
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Desacuerdo Download de archivos con php

Hola que tal hice un link en mi pagina, donde se muestran imagenes, para poder bajar archivos por ejemplo:

Código PHP:
$sql "select archivo_adjunto, ext from downloades where id=".$_SESSION['id_detalle']; 
            
$result mysql_query($sql) or die('Bad query at 12!'.mysql_error()); 
            while(
$row mysql_fetch_array($result))
            {
                
$ruta $row['archivo_adjunto'];
                
$ext $row['ext'];


            }
            
            if(
$ext==".jpg"||$ext==".gif" )
            {

echo 
"<img src=".$ruta.">"
echo 
"<a href=\"download.php?var=".$ruta."\">Descargar</a>";
// Header("Location: ".$ruta."");

            
}
            else 
            {
                if(
$ext==".pdf"||$ext==".doc")
                {
                echo 
"<IFRAME src=".$ruta." width=\"1000\" height=\"500\" scrolling=\"auto\" frameborder=\"1\"/>";
                }
            } 

y en l apag de download.php tengo esto:

Código PHP:
<?


$files 
=$_GET['var']; 
echo 
$files;
echo 
dl_file($files);

function 
dl_file($file){


    if (!
is_file($file)) { die("<b>404 File not found!</b>"); }


    
$len filesize($file);
    
$filename basename($file);
    
$file_extension strtolower(substr(strrchr($filename,"."),1));


    switch( 
$file_extension ) {
          case 
"pdf"$ctype="application/pdf"; break;


      case 
"doc"$ctype="application/msword"; break;


      case 
"gif"$ctype="image/gif"; break;
      case 
"png"$ctype="image/png"; break;
      case 
"jpeg":$ctype="image/jpg"; break;
      case 
"jpg"$ctype="image/jpg"; break;

   
      default: 
$ctype="application/force-download";
    }

       
header("Pragma: public");
    
header("Expires: 0");
    
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    
header("Cache-Control: public"); 
    
header("Content-Description: File Transfer");
    
       
header("Content-Type: $ctype");

       
$header="Content-Disposition: attachment; filename=".$filename.";";
    
header($header );
    
header("Content-Transfer-Encoding: binary");
    
header("Content-Length: ".$len);
    @
readfile($file);
    exit;
}



?>

el problema esuqe alguardar las imagenes en el escritrio no se pueden leer!! me dice type not especified. De nada me sirve que se puedan descarar si después no s epueden leer, que estoy haciendo mal? De Antemano Gracias.

Última edición por Monimo; 06/06/2008 a las 10:14
  #2 (permalink)  
Antiguo 06/06/2008, 08:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Download de archivos con php

haber, haber... explícanos mas sobre el error que te dice....

y que es eso de guardarlos en el escritorio?

demas, pienso que el header (para todo tipo de archivos) debe ser este...

Código:
content-disposition: attachment; filename="nombre_del_archivo.a_descargar"
nombre_del_archivo.a_descargar no es el nombre, y mucho menos la ruta del original... solo debes especificar un nombre adecuado... quizá, nuevo.... pero sin ruta
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/06/2008, 09:00
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Respuesta: Download de archivos con php

Ok me explicaré, una vez que esta el código y la página en línea, yo lo pruebo para ver sis irve asi que como usuario final le doy click en el link para descargarlas en mi computadora. al descargar el archivo y guardarlo en mi disco duro, cuando quiero abrirlo para verlo me dice
  #4 (permalink)  
Antiguo 06/06/2008, 09:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Download de archivos con php

podrías ponernos un enlace.... hacia algun archivo de "estos" para descargarlo... ?

demas, creo ke esto esta mal....

Código PHP:
$files =$_GET['var']; 
echo 
$files;
echo 
dl_file($files); 
deberia ser asi...

Código PHP:
$files =$_GET['var']; 
// echo $files;
dl_file($files); 
cuando haces echo corrompes la información del archivo, ojo!!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/06/2008, 09:19
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Respuesta: Download de archivos con php

LOS ULTIMOS DOS LINKS DE DETALLES TIENEN IMAGENES PARA DESCARGAR, PUEDES AVISARME CUANDO YA LOS HAYAS PROBADO PARA volver a activar las sesione sy eso? plz

Última edición por Monimo; 06/06/2008 a las 23:48
  #6 (permalink)  
Antiguo 06/06/2008, 09:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Download de archivos con php

ya los probé!!!

y efectivamente.... el archivo esta corrupto.....
debes averiguar si es lo anterior que puse...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/06/2008, 09:26
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Respuesta: Download de archivos con php

ok lo probaré muchas gracias

buu no! ya lo probé y no es eso...:(

Alguien puede facilitarme un código que sirvaa? ayuda :7

Última edición por Monimo; 06/06/2008 a las 11:23
  #8 (permalink)  
Antiguo 10/06/2008, 08:52
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Respuesta: Download de archivos con php

ayudenmmeeeeeeeeeeeeeeee plzzz! no logro resolverlo buu es la primera vez...que no logro resolver estop :(
  #9 (permalink)  
Antiguo 10/06/2008, 09:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Download de archivos con php

bueno yo hice una función facilita....

Código PHP:
<?php
/**
 * (datos[, nombre[, tipo]])
 *
 * Obliga la descarga de los datos determinados por tipo, con
 * el nombre especificado... o usando un nombre al azar.
 */
function download($data$name null$mime 'application/octet-stream')
{
    if (
headers_sent())
    { 
// Ni modo xS
        
return;
    }
    elseif (!
$name)
    { 
// nada?
        
$name 'archivo';
    }

    
// ------------------- Cabeceras
    
header(sprintf('content-disposition: attachment; filename="%s"'$name));
    
header(sprintf('content-length: %d'strlen($data)));
    
header(sprintf('content-type: %s'$mime));

    echo 
$data// OK
    
exit;
}
?>
solo debes intentar esto....

Código PHP:
download(file_get_contents('archivo_a_descargar'), 'nombre_asignado''tipo/mime'); 
tan solo eso... ningun echo antes ni después... no mas
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 03:01.