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:
prensa.htmlCREATE 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 ;
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ñí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 »</a></p> </form> </body> </html>
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";
?>
Código PHP:
<?php
function conectar()
{
mysql_connect("localhost", "usuario", "pass");
mysql_select_db("base_datos");
}
function desconectar()
{
mysql_close();
}
?>
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>";
}
?>
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($result, 0, "tipo");
$contenido = mysql_result($result, 0, "contenido");
header("Content-type: $tipo");
print $contenido;
?>
gracias por su tiempo y espero me puedan ayudar