Foros del Web » Programando para Internet » PHP »

Descargar archivo pdf o doc de la bese de datos

Estas en el tema de Descargar archivo pdf o doc de la bese de datos en el foro de PHP en Foros del Web. Hola amigos: tengo el siguiente codigo con el que muestro el enlace en la página de descarga Código PHP: <? include( "connect.php" ); $sql = ...
  #1 (permalink)  
Antiguo 15/10/2007, 18:28
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Descargar archivo pdf o doc de la base de datos **RESUELTO

Hola amigos:

tengo el siguiente codigo con el que muestro el enlace en la página de descarga

Código PHP:
<?

include("connect.php");

$sql="SELECT * FROM prensa WHERE company='Company X' ORDER BY ID DESC"
$result=mysql_query($sql);  

while(
$row=mysql_fetch_array($result)) 

echo 
"<div align='justified'>";
echo 
"<a class='dos' a href='descarga_notas.php?id=".$row[id]."'>".$row[titulo]."</a><br><br>";
}
?>
Esta parte esta solo de momento, no existe ninguna pagina descarga_notas.php y no se si es necesario el paso de variables o el enlace va directo y ya.
Código PHP:
echo "<a class='dos' a href='descarga_notas.php?id=".$row[id]."'>".$row[titulo]."</a><br><br>"
Lo que no se es como debe ser el enlace correcto para poder descargar al pinchar. he visto algo de headers pero no lo comprendo.

Gracias por su ayuda

Última edición por iarrieta; 16/10/2007 a las 22:55 Razón: Resuelto
  #2 (permalink)  
Antiguo 15/10/2007, 23:59
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Re: Descargar archivo pdf o doc de la bese de datos

si lo que quieres descargar es un archivo que no contenga codigo php adentro o sea un .exe, .pdf, .lo que sea solamente haces el enlace a ese archivo y listo

<a href="descargar.php?id=ARCHIVO.PDF" ></a>

y en el archivo descargar.php ingresas algo como

Código PHP:
<?
if(!empty($_GET['id'])){
$archivo $_GET['id'];
header("Location /ruta/en/el/servidor/del/archivo/$archivo");

}else{
header("Location pagina_error.php");
}
?>

y si el archivo contiene codigo php y no quieres que se borre entonces realizalo de la siguiente forma
el link realizalo de la misma forma
Código PHP:
<?php
    $f 
$_GET["id"];
    
header("Content-type: application/octet-stream");
    
header("Content-Disposition: attachment; filename=\"/directorio/del/archivo/$f\"\n");
    
$fp=fopen("/directorio/del/archivo/$f""r");
    
fpassthru($fp);
?>

espero haber entendido y que te sirva
  #3 (permalink)  
Antiguo 16/10/2007, 00:20
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Descargar archivo pdf o doc de la bese de datos

Gracias por responder. No se realmente si me sirva, me tocaria probar y modificar algunas cosas.

El asunto es que el archivo pdf no esta en ninguna carpeta, esta como blob en la base de datos.

La idea es que van a subir infinidad de archivos en pdf conteniendo notas de prensa y se me ocurrio que seria mejor subir el titulo de la nota y el archivo pdf a la base de datos, asi como hago con imagenes. La subida esta perfecta, lo que no se es despues de mostrar el enlace con el titulo de la nota, al clickear, se descargue el correspondiente pdf segun "el ID???"

Si se requiere el codigo que utilizo para guardar y mostrar lo pongo completo.

Gracias de nuevo korg1988
  #4 (permalink)  
Antiguo 16/10/2007, 21:49
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
Re: Descargar archivo pdf o doc de la bese de datos

deja tu codigo para verlo
  #5 (permalink)  
Antiguo 16/10/2007, 22:11
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Descargar archivo pdf o doc de la bese de datos

El form para ingresar los pdf a la base de datos (son notas de prensa en pdf de diferentes compañias, el titulo en la BD es para que sea el link en la pagina):
Código HTML:
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="insert_prensa.php">
            <table width="500" border="0">
              <tr>
                <td><div align="left">Compañía:</div></td>
                <td><div align="left">
                  <input name="company" type="text" id="company" size="50" align="left" />
                </div></td>
              </tr>
              <tr>
                <td width="110"><div align="left" class="normal">T&iacute;tulo:</div></td>
                <td width="380"><div align="left">
                    <input name="titulo" type="text" id="titulo" size="50" align="left" />
                hasta 250 caracteres.</div></td>
              </tr>
              <tr>
                <td><div align="left" class="normal">Archivo:</div></td>
                <td><div align="left">
                    <input name="archivo" type="file" id="archivo" size="33" align="left" />
                Sólo Pdf o Word</div></td>
              </tr>
              
              <tr>
                <td>&nbsp;</td>
                <td>&nbsp;</td>
              </tr>
              <tr>
                <td colspan="2"><div align="center">
                    <input type="submit" name="submit" value="Subir Nota de Prensa" />
                </div></td>
              </tr>
            </table>
          </form> 
El que guarda en la base de datos:
Código PHP:
<?php
header 
("Location: prensa.html");

include(
"connect.php");
 
$binario_nombre_temporal=$_FILES['archivo']['tmp_name']; 
 
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal))); 
 
$binario_nombre=$_FILES['archivo']['name']; 
$binario_peso=$_FILES['archivo']['size']; 
$binario_tipo=$_FILES['archivo']['type']; 
 
$consulta_insertar "INSERT INTO prensa (id, company, titulo, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$company', '$titulo', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')"
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");

exit; 
?>
Y finalmente el que muestra el enlace en la pagina:
Código PHP:
<?

include("connect.php");

$sql="SELECT * FROM prensa WHERE company='Aerogroup International' ORDER BY ID DESC"
$result=mysql_query($sql);  

while(
$row=mysql_fetch_array($result)) 

echo 
"<div align='justified'>";
echo 
"<a class='dos' a href='descarga_notas.php?id=".$row[id]."'>".$row[titulo]."</a><br><br>";
}
?>
Todo funciona, lo que no se es como al hacer click en el enlace (titulo de la nota) se descargue el pdf
Repito que esto esta solo puesto alli, no se como va:
Código PHP:
href='descarga_notas.php?id=".$row[id]."'>".$row[titulo]."</a
  #6 (permalink)  
Antiguo 16/10/2007, 22:12
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Descargar archivo pdf o doc de la bese de datos

El form para ingresar los pdf a la base de datos (son notas de prensa en pdf de diferentes compañias, el titulo en la BD es para que sea el link en la pagina):
Código HTML:
<form id="form1" name="form1" method="post" enctype="multipart/form-data" action="insert_prensa.php">
            <table width="500" border="0">
              <tr>
                <td><div align="left">Compañía:</div></td>
                <td><div align="left">
                  <input name="company" type="text" id="company" size="50" align="left" />
                </div></td>
              </tr>
              <tr>
                <td width="110"><div align="left" class="normal">T&iacute;tulo:</div></td>
                <td width="380"><div align="left">
                    <input name="titulo" type="text" id="titulo" size="50" align="left" />
                hasta 250 caracteres.</div></td>
              </tr>
              <tr>
                <td><div align="left" class="normal">Archivo:</div></td>
                <td><div align="left">
                    <input name="archivo" type="file" id="archivo" size="33" align="left" />
                Sólo Pdf o Word</div></td>
              </tr>
              
              <tr>
                <td>&nbsp;</td>
                <td>&nbsp;</td>
              </tr>
              <tr>
                <td colspan="2"><div align="center">
                    <input type="submit" name="submit" value="Subir Nota de Prensa" />
                </div></td>
              </tr>
            </table>
          </form> 
El que guarda en la base de datos:
Código PHP:
<?php
header 
("Location: prensa.html");

include(
"connect.php");
 
$binario_nombre_temporal=$_FILES['archivo']['tmp_name']; 
 
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal))); 
 
$binario_nombre=$_FILES['archivo']['name']; 
$binario_peso=$_FILES['archivo']['size']; 
$binario_tipo=$_FILES['archivo']['type']; 
 
$consulta_insertar "INSERT INTO prensa (id, company, titulo, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$company', '$titulo', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')"
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");

exit; 
?>
Y finalmente el que muestra el enlace en la pagina:
Código PHP:
<?

include("connect.php");

$sql="SELECT * FROM prensa WHERE company='XXXXXXXXXX' ORDER BY ID DESC"
$result=mysql_query($sql);  

while(
$row=mysql_fetch_array($result)) 

echo 
"<div align='justified'>";
echo 
"<a class='dos' a href='descarga_notas.php?id=".$row[id]."'>".$row[titulo]."</a><br><br>";
}
?>
Todo funciona, lo que no se es como al hacer click en el enlace (titulo de la nota) se descargue el pdf
Repito que esto esta solo puesto alli, no se como va:
Código PHP:
href='descarga_notas.php?id=".$row[id]."'>".$row[titulo]."</a
  #7 (permalink)  
Antiguo 16/10/2007, 22:58
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Descargar archivo pdf o doc de la bese de datos

Por si alguien tenia el mismo problema, aqui pongo el cofigo ya corregido y funcionando (el form se mantiene igual):

El que guarda en la base de datos...
Código PHP:
<?php
header 
("Location: prensa.html");

include(
"connect.php");
 
 
$archivo $_FILES["archivo"]["tmp_name"]; 
 
$tamanio $_FILES["archivo"]["size"];
 
$tipo    $_FILES["archivo"]["type"];
 
$nombre  $_FILES["archivo"]["name"];
 
$company $_POST["company"];
 
$titulo  $_POST["titulo"];

 if ( 
$archivo != "none" )
 {
    
$fp fopen($archivo"rb");
    
$contenido fread($fp$tamanio);
    
$contenido addslashes($contenido);
    
fclose($fp); 

    
$qry "INSERT INTO prensa VALUES 
            (0,'$company','$titulo','$contenido','$nombre','$tipo')"
;

    
mysql_query($qry);

    if(
mysql_affected_rows($conn) > 0)
       print 
"Se ha guardado el archivo en la base de datos.";
    else
       print 
"NO se ha podido guardar el archivo en la base de datos.";
 }
 else
    print 
"No se ha podido subir el archivo al servidor"
?>
El que muestra el enlace en la pagina...
Código PHP:
<?

include("connect.php");

$sql="SELECT * FROM prensa WHERE company='XXXXXXXXXXXX' ORDER BY ID DESC"
$result=mysql_query($sql);  

while(
$row=mysql_fetch_array($result)) 

echo 
"<div align='justified'>";
echo 
"<a class='dos' a href='descargar_notas.php?id=$row[id]'>".$row[titulo]."</a><br><br>";
}
?>
El que ejecuta la descarga al pinchar el enlace...
Código PHP:
<?

include("connect.php");

$sql="SELECT tipo, contenido FROM prensa WHERE id=$id"
$result=mysql_query($sql);
$tipo mysql_result($result0"tipo");
$contenido mysql_result($result0"contenido");

header("Content-type: $tipo");
print 
$contenido;

?>
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:17.