Foros del Web » Creando para Internet » Diseño web »

Módulo de descarga de documentos pdf

Estas en el tema de Módulo de descarga de documentos pdf en el foro de Diseño web en Foros del Web. He montado un Gestor de Publicaciones. denominado ( documento.php ). Cada publicación si es comercializable genera la imagen del carrito de compra y crea un ...
  #1 (permalink)  
Antiguo 25/05/2009, 01:31
 
Fecha de Ingreso: septiembre-2008
Mensajes: 185
Antigüedad: 15 años, 6 meses
Puntos: 1
Módulo de descarga de documentos pdf

He montado un Gestor de Publicaciones. denominado ( documento.php ).

Cada publicación si es comercializable genera la imagen del carrito de compra y
crea un resumen del pedido en la página -resumen_carrito.php-. Desde aquí
se envia al cliente una serie de datos del pedido y por otro lado se envia a
Paypal los datos de la operación.

Entre medias necesitaría crear un pequeño módulo de descarga en php de estos documentos en pdf... con un planteamiento lo más sencillo posible por mi
falta de experiencia todavía en PHP.

Mi pregunta es como los planteariais y si me podeìs recomendar algún módulo
que me permita ir orientandome en el punto.
  #2 (permalink)  
Antiguo 25/05/2009, 01:34
Avatar de hades87  
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona - España
Mensajes: 3.194
Antigüedad: 16 años, 4 meses
Puntos: 68
Respuesta: Módulo de descarga de documentos pdf

Para estos temas mejor dirígete al foro de PHP que te podrán ayudar mas
__________________
No diseñes usando tablas.
  #3 (permalink)  
Antiguo 25/05/2009, 04:17
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Módulo de descarga de documentos pdf

Esto iría en PHP, pero ya que está aquí respondo. Este es un código que ideé hace unos años. Es un archivo php que solo permite descargar si se pasan una serie de parámetros por $_POST tales como el nombre de archivo, la extensión y tal. Como la página nunca carga (dado que no es una página) no se ven los datos del _POST, simplemente la descarga:

Código PHP:
<?php
//Convierte el archivo en pedazos.
function readfile_chunked($filename,$retbytes=true) {
   
$chunksize 1*(1024*1024); // how many bytes per chunk
   
$buffer '';
   
$cnt =0;
   
// $handle = fopen($filename, 'rb');
   
$handle fopen($filename'rb');
   if (
$handle === false) {
       return 
false;
   }
   while (!
feof($handle)) {
       
$buffer fread($handle$chunksize);
       echo 
$buffer;
       
ob_flush();
       
flush();
       if (
$retbytes) {
           
$cnt += strlen($buffer);
       }
   }
       
$status fclose($handle);
   if (
$retbytes && $status) {
       return 
$cnt// return num. bytes delivered like readfile() does.
   
}
   return 
$status;
}
//Según la extensión es un archivo u otro
if (isset($_POST['ext'])){ //Si hay datos en _POST
 
switch($_POST['ext']){
  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 "jpe": case "jpeg": case "jpg": $ctype="image/jpg"; break;
         //        case ".db": case "db": case "php": exit('No se permite la descarga de archivos de ese tipo'); break;
                
default: $ctype="application/force-download"//Tu solo quieres este así que te puse el resto como notas.
 
}
 
//Begin writing headers
   
header("Pragma: no-cache"); //No se guarda en caché
   
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); //Fecha pasada, en el caso de que se guarde en algún sitio, se borraría enseguida
   
header("Content-Description: File Transfer");
   
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 
//Use the switch-generated Content-Type
   
header('Content-Type: '.$ctype);
 
//Force the download
   
print $_POST['res'];
   
$header 'Content-Disposition: attachment; filename="'.$_POST['filename'].'"';
   
header($header);//Aquí tienes que $_POST['filename'] contiene el nombre de archivo a descargar, no la ruta. La ruta se extrae de una base de datos según una ID.
//También puedes probar a buscar un sistema de claves temporales para que no se pueda reutilizar más tarde
//y para mayor seguridad las claves evitan que alguien use algún script nocivo.
  
header("Content-Transfer-Encoding: binary");
    
$link mysql_connect ("tu mysql server""mysql user""mysqlpass");//cambia las cosas aquí
    
mysql_select_db("mysql db"); // cambia las cosas aquí.
    //Las consultas a las bases de datos van aquí:

    //Ya acabaron. en $url has de guardar la ruta. Tiene que ser una ruta relativa o si no desde la raíz de tu web, nunca desde el http://.
    
$len = @filesize($url);
   
header("Content-Length: $len");
   
set_time_limit(0);
  
readfile_chunked($url) or die("File not found.");//Esto manda un error si no existe el archivo.
 
mysql_close ($link); // cierra la conexión
}else{ // Si no hay datos en _Post
 
header("HTTP/1.1 301 Moved Permanently");
 
header("Location: http://www.tupagina.com"); //Aquí el nombre de tu página.
}
?>
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 21:12.