Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/05/2011, 08:21
khryztall
 
Fecha de Ingreso: mayo-2011
Mensajes: 47
Antigüedad: 13 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