El siguiente codigo lo encontre por ahi para realizar el guardado de cualquier tipo de archivo en una base de datos mysql. Ustedes dispondran de el como puedan y quieran despues no me hechen la culpa de que hice daños. Lo primero que se hara sera la base de datos con su respectiva tabla donde se insertaran los archivos, que el script sql es el siguiente copienlo y ejecutenlo en el administrador web de mysql o con el mysql query de mysql gui tools, ustedes decidiran cual es la mejor forma.
-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 5.0.67-community
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
--
-- Create schema archivos
--
CREATE DATABASE IF NOT EXISTS archivos;
USE archivos;
--
-- Definition of table `archivos`
--
DROP TABLE IF EXISTS `archivos`;
CREATE TABLE `archivos` (
`id` int(5) NOT NULL auto_increment,
`nombre` varchar(50) NOT NULL,
`titulo` varchar(50) NOT NULL,
`contenido` longblob NOT NULL,
`tipo` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
--
-- Dumping data for table `archivos`
--
/*!40000 ALTER TABLE `archivos` DISABLE KEYS */;
/*!40000 ALTER TABLE `archivos` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
El siguiente script es el de conectar que se llama como su nombre lo indica
conectar.php.
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<?php
$host='localhost';//servidor
$usuario='root';//usuario del motor mysql
$password=xxxxxxx;// contraseña del motor mysql ustedes colocaran la suya
$conectar=mysql_connect($host,$usuario,$password);
$basededatos=mysql_select_db("archivos",$conectar);
?>
</html>
El siguiente script php que se llama
escoger_archivo.php es donde se realiza la accion de escoger del archivo. Como pueden ver realiza un formulario hacia
guardar_archivo.php que es donde se guarda el registro en la base de datos.
Código PHP:
<form enctype="multipart/form-data" action="guardar_archivo.php" method="post">
Descripción <input type="text" name="titulo" size="40">
Ubicación <input type="file" name="archivito">
<input type="submit" value="Enviar archivo">
</form>
El siguiente script php que se llama
guardar_archivo.php, es donde se realiza la insercion en la base de datos. Pueden deducir como es el procedimiento.
Código PHP:
<?php
include("conectar.php");
mysql_select_db($basededatos,$conectar);
$archivo = $_FILES["archivito"]["tmp_name"];
$tamanio = $_FILES["archivito"]["size"];
$tipo = $_FILES["archivito"]["type"];
$nombre = $_FILES["archivito"]["name"];
$titulo = $_POST["titulo"];
echo $tamanio;
if ( $archivo != "none" )
{
$fp = fopen($archivo, "rb");
$contenido = fread($fp, $tamanio);
$contenido = addslashes($contenido);
fclose($fp);
$qry = "INSERT INTO archivos VALUES (0,'$nombre','$titulo','$contenido','$tipo')";
mysql_query($qry);
if(mysql_affected_rows($conectar) > 0)
{
print "Se ha guardado el archivo en la base de datos.";
echo "<br>";
echo "<a href='listar_archivos.php'>Listar Archivos</a>";
}
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";
}
?>
Ya realizado esto si queremos listar que archivos tenemos en nuestra base de datos podemos utilizar el siguiente script php que se llama
listar_archivos.php, que es donde los seleccionaremos y descargaremos.
Código PHP:
<?php
include("conectar.php");
mysql_select_db($basededatos,$conectar);
echo "<center><a href='escoger_archivo.php'>Seleccionar archivo</a></center>";
echo "<br><br>";
$qry = "SELECT id, nombre, titulo, tipo FROM archivos";
$res = mysql_query($qry);
while($fila = mysql_fetch_array($res))
{
print "$fila[titulo]
<br>
$fila[nombre] ($fila[tipo])
<br>
<a href='descargar_archivo.php?id=$fila[id]'>Descargar</a>
<br>
<br>";
}
?>
Como pueden notar el hace referencia al script php llamado
descargar_archivo.php que busca el respectivo id del registro en la base de datos. El cual es el siguiente, tener en cuenta dejar la arrobas porque sino no funciona o busquen otra alternativa como todo en la vida cacharreando.
Código PHP:
<?php
$id = $_GET['id'];
@mysql_connect("localhost","root","xxxxxx");
@mysql_select_db("archivos");
$qry = "SELECT tipo, contenido FROM archivos WHERE id='$id'";
$res = @mysql_query($qry);
$tipo = @mysql_result($res, 0);
$contenido = @mysql_result($res, 0, "contenido" );
Header( "Content-type: $tipo");
echo $contenido;
?>
Espero les sea de utilidad porque a mi me funciono perfectamente. Gracias.