En este tutorial veremos como subir cualquier archivo a una base de datos MySql y también veremos como descargar los archivos que estén el la base de datos.
Lo primero que hay que hacer es crear nuestra tabla en la base de datos, puede tener la estructura que esta abajo o cualquier otra pero si es importante que en el campo que vas a almacenar los archivos sea de tipo LONGBLOB, además de algún campo que identifique el nombre del archivo.
CREATE TABLE `archivos` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(30) collate latin1_general_ci NOT NULL,
`archivo` longblob NOT NULL,
`tipo` varchar(20) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MYISAM ;
Posteriormente creamos el formulario don de cargaremos el archivo, cuando carguemos un archivo ala base de datos en la parte inferior se ira mostrando una lista de los archivos que están en la tabla y al dar click al enlace se descargara el archivo todo el código de la pagina esta comentado para que le entiendas mas rápido.
<?
if($_GET['descarga']){
//conectamos al servidor
mysql_connect("localhost","root","");
mysql_select_db("prueba");
$sql = "select * from archivos where id = ".$_GET['descarga'];
$res = mysql_query($sql);
$data = mysql_fetch_assoc($res);
header("Content-type: ".$data['tipo']);
header("Content-Disposition: attachment; filename=".$data['nombre']);
echo $data['archivo'];
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Subir archivo</title>
</head>
<body>
<h1>Subir Archivo</h1>
<?php
if(isset($_POST['guardar'])){
//conectamos al servidor
mysql_connect("localhost","root","");
mysql_select_db("prueba");
//abrimos el archivo temporal que se crea
$fh = fopen($_FILES['archivo']['tmp_name'],'r');
if($fh){ //si se abre bien leemos el archivo
$archivo = fread($fh, filesize($_FILES['archivo']['tmp_name']));
fclose($fh);
//limpiamos el contenido
$archivo = addslashes($archivo);
$tipo = $_FILES['archivo']['type'];
//nombre del archivo
if(empty($_POST['nombre']))
$nombre = sql_quote($_FILES['archivo']['name']);
else
$nombre = $_POST['nombre'];
//insertar el archivo a la bd
$sql="insert into archivos (nombre, archivo, tipo) values ('$nombre', '$archivo', '$tipo')";
mysql_query($sql);
echo "El archivo se cargo con exito<br />";
} else
echo "Error al cargar el archivo<br />";
}
?>
<form action="subirarchivo.php" method="post" enctype="multipart/form-data" name="form1">
<p>Nombre.:
<input type="text" name="nombre" />
</p>
<p>Archivo.:
<input type="file" name="archivo" />
</p>
<p>
<input type="submit" name="guardar" value="Guardar" />
</p>
</form>
<h1>Descargar archivos</h1>
<?php
//conectamos al servidor
mysql_connect("localhost","root","");
mysql_select_db("prueba");
//seleccionamos los archivos que hay en la db
$sql = "SELECT * FROM archivos";
$res = mysql_query($sql);
$lista = '<ol>'; //generamos la lista
while($data = mysql_fetch_assoc($res)){
$lista .= '<li>
<a href="subirarchivo.php?descarga='.$data['id'].'">
'.$data['nombre'].'
</a>
</li>';
}
$lista .= '</ol>';
echo $lista;
?>
</body>
</html>
Descargar