Foros del Web » Programando para Internet » PHP »

Como descargo archivos Microsoft de mi BD?

Estas en el tema de Como descargo archivos Microsoft de mi BD? en el foro de PHP en Foros del Web. Buenos días gente del Under! Tengo un código que me permite descargar archivos de la base de datos, el código funciona muy bien para txt ...
  #1 (permalink)  
Antiguo 07/07/2008, 08:22
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 15 años, 11 meses
Puntos: 8
Pregunta Como descargo archivos Microsoft de mi BD?

Buenos días gente del Under!
Tengo un código que me permite descargar archivos de la base de datos, el código funciona muy bien para txt y pdf, pero si quiero algun archivo que no se ejecute en el navegador le cambia la extención al archivo por php, es decir que el descarga bien el archivo pero le hace esa modificación por lo que al momento de guardar en el disco abria que especificar la extención del archivo y eso no está bien.

el código es el siguiente:

Base de datos
Código:
CREATE TABLE `prensa` (
  `id` int(11) NOT NULL auto_increment,
  `company` varchar(255) NOT NULL,
  `titulo` varchar(255) NOT NULL,
  `contenido` longblob NOT NULL,
  `nombre` varchar(255) NOT NULL,
  `tipo` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
prensa.html
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="reg.php" method="post" enctype="multipart/form-data">
<p>Archivo 
  <input type="file" name="archivo" id="archivo" />
</p>
<p>Compa&ntilde;&iacute;a 
  <input type="text" name="company" id="company" />
</p>
<p>Titulo 
  <input type="text" name="titulo" id="titulo" />
</p>
<p>
  <input type="submit" name="enviar" id="enviar" value="Submit" />
</p>
<p><a href="ver.php">Descargar &raquo;</a></p>
</form>
</body>
</html> 
reg.php
Código PHP:
<?php
header 
("Location: prensa.html");

include(
"connect.php");
conectar();

 
$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"
?>
connect.php
Código PHP:
<?php
function conectar()
{
    
mysql_connect("localhost""usuario""pass");
    
mysql_select_db("base_datos");
}

function 
desconectar()
{
    
mysql_close();
}
?>
ver.php
Código PHP:
<?
include("connect.php");
conectar();

$sql="SELECT * FROM prensa"
$result=mysql_query($sql);  

while(
$row=mysql_fetch_array($result)) 

echo 
"<div align='justified'>";
echo 
"<a href='descarga.php?id=$row[id]'>".$row[titulo]."</a><br><br>";
}
?>
descarga.php
Código PHP:
<?
include("connect.php");
conectar();
$id=$_GET['id'];
$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;

?>
que es lo que está mal???

gracias por su tiempo y espero me puedan ayudar
  #2 (permalink)  
Antiguo 07/07/2008, 08:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Como descargo archivos Microsoft de mi BD?

Hola abigor66,

Tu problema es en descarga:
Código PHP:
<?
include("connect.php");
conectar();
$id=$_GET['id'];
$sql="SELECT tipo, contenido FROM prensa WHERE id=$id"
$result=mysql_query($sql);
$tipo mysql_result($result0"tipo");
$contenido mysql_result($result0"contenido");
$tamanio strlen$contenido );
$filename "el nombre que quieras.extension";

header("Content-Transfer-Encoding: binary");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Length: $tamanio" );
header("Content-Type: application/force-download");

print 
$contenido;

?>
Saludos.
  #3 (permalink)  
Antiguo 07/07/2008, 09:12
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 15 años, 11 meses
Puntos: 8
Respuesta: Como descargo archivos Microsoft de mi BD?

Gracias GatorV, pero el problema es que me cambia el contendo del archivo (es un archivo de excel) por el nombre que le introduzco en el formulario.

La idea es que no modifique el archivo que se subio a la base de datos.

gracias
  #4 (permalink)  
Antiguo 07/07/2008, 09:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Como descargo archivos Microsoft de mi BD?

Hola abigor66,

¿No entiendo entonces? Cual es tu problema concreto?, ¿no mencionas que era que el archivo no debía de llamarse con la extensión de PHP?

Saludos.
  #5 (permalink)  
Antiguo 07/07/2008, 09:24
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 15 años, 11 meses
Puntos: 8
Respuesta: Como descargo archivos Microsoft de mi BD?

lo que sucedes es que el contenido que está dentro del archivo que quiero descrgar de la base de datos se cambia con el codigo que me pasaste, es reemplazado por el titulo que se introduce en el form inicial. y eso no me sirve pues me interesa es que el contenido sea el que subi (el que tiene el archivo original)

no sé porque está haciendo ese cambio. si me hice entender?
  #6 (permalink)  
Antiguo 07/07/2008, 09:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Como descargo archivos Microsoft de mi BD?

No entiendo tu duda, ya que lo que hace el código que te puse es forzar correctamente la descarga de los archivos, el contenido tu lo manejas con tu variable $contenido.

Saludos.
  #7 (permalink)  
Antiguo 07/07/2008, 09:48
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 15 años, 11 meses
Puntos: 8
Respuesta: Como descargo archivos Microsoft de mi BD?

Ok, todo bien.

como estaba haciendo otras pruebas, habia una linea que me estaba ocacionando el lio.

Gracias por su paciencia.

Funcionando al 100%
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 12:24.