Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/05/2011, 08:21
khryztall
 
Fecha de Ingreso: mayo-2011
Mensajes: 47
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: subida de varios archivos almacenamiento en la base de datos y descarga de

2do subir varios archivos a la vez y almacenarlos en la base de datos:

primero el codigo html:

Código HTML:
<form action="<?php echo $_SERVER['PHP_SELF']; ?> method="POST"  name="frmLogin" enctype="multipart/form-data">							
Documento 1:
<input type="file" name="archivos[]"/>
Documento 2:
<input type="file" name="archivos[]"/>
Documento 3:
<input type="file" name="archivos[]"/>
Documento 4:
<input type="file" name="archivos[]"/>
<input type="submit" value="Enviar" name="envia"/>
</form> 
En este caso vamos a subir cuatro archivos, en la web existen varios metodos para subir x cantidad de archivos estilo Gmail pero este no es el caso ya que los q vamos a subir son fijos.

Nota: es importante que el name de los input tengan [] al final ya que indica que hacen parte de un vector.

bueno ahora los vamos a subir y almacenar en la base de datos veran q la diferencia entre subir uno o varios es recorrer el vector que en este caso se llama archivos:
Código PHP:
if( isset($_POST["envia"]) )
{    

if (isset (
$_FILES["archivos"])) 
{         

//iniciamos la configuracion

$folder = "docs/";//carpeta en donde se subiran los archivos
$maxlimit = 50000000000; 
$allowed_ext = "rar,jpg,bmp,jpeg,gif";
$overwrite = "no";
$match = "";
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";                            
$error="";
$cad[]="";
$tot = count($_FILES['archivos']['name']);//esta seccion cuenta la cantidad de los archivos enviados pero como dijimos q era fijo no lo vamos a necesitar en caso de que lo quieran dinamicos pues lo usan si no no

for ($i = 0; $i < $tot; $i++)//recorremor el vector archivos[]
{ 
$filename = "";
$filesize = $_FILES['archivos']['size'][$i];
$archivo=$_FILES['archivos']['tmp_name'][$i];                        
$sep=explode("image/",$_FILES['archivos']['type'][$i]);                
$tipo=$sep[1];                                        

for(
$j=0;$j<12;$j++) 
{
$filename .= substr($str,rand(0,62),1);}

if(!
$filename || $filename=="")
{
$error = "- Ningún archivo selecccionado para subir.";}

elseif(
file_exists($folder.$filename) && $overwrite=="no")
{ 
$error = "- El archivo $filename ya existe";}

if(
$filesize < 1)
{
$error .= "- Archivo vacío.";}

elseif(
$filesize > $maxlimit)
{
$error .= "- Este archivo supera el máximo tamaño permitido.";}
                                    
if(
$tipo == "gif" || $tipo == "jpeg" || $tipo == "jpg" || $tipo == "bmp")
{
$match = "1";}

if(!
$match)
{
$error .= "- Este tipo de archivo no está permitido: $tipo";}    

if(
$error)
{print 
"Se ha producido el siguiente error al subir el archivo: $error";}

else
{
$destino = $folder.$filename.'.'.$tipo;

if(
move_uploaded_file($archivo, $destino))
{
$cad[$i] = $destino;}

else
echo 
"archivo no subido";
}                                                   
}                            
$conexion = new mysqli("servidor","user","pass","base_datos");    

if(
$conexion)
{
$numced = $sesion->get("cedpart");
$insercion = "INSERT INTO documentos VALUES ('".$cad[0]."','".$cad[1]."','".$cad[2]."','".$cad[3]."')";

$result = $conexion->query($insercion);            

if(
$row_cnt > 0)
{echo 
"archivo almacenado en la base de datos";}    

else
{echo 
"archivo no almacenado";}                            

}
else
{echo 
"no hay conexion";}              } 
como vemos almacenamos las cadenas de ruta/archico.tipo en una cadena y esa cadena es la que utilizamos como variable para el ingreso a la base de datos