Foros del Web » Programando para Internet » PHP »

upload multiple de blobs a mysql

Estas en el tema de upload multiple de blobs a mysql en el foro de PHP en Foros del Web. Hola amigos,he estado siguiendo el manual de Cluster para subir inagenes a mysql en campos blobs y sin problema, me sube todos los datos de ...
  #1 (permalink)  
Antiguo 24/02/2005, 03:16
 
Fecha de Ingreso: octubre-2004
Mensajes: 230
Antigüedad: 13 años, 1 mes
Puntos: 0
upload multiple de blobs a mysql

Hola amigos,he estado siguiendo el manual de Cluster para subir inagenes a mysql en campos blobs y sin problema, me sube todos los datos de formulario a la Db y perfecto Pero se me ha planteado el problema de que ahora tiene que poder subir 4 imagenes al mismo tiempo del tipo
Código:
<td colspan="6" align="center">
Foto 1:<input type="file" name="F1" size="25" class="boton"><br>
Foto 2:<input type="file" name="F2" size="25" class="boton"><br>
Foto 3:<input type="file" name="F3" size="25" class="boton"><br>
Foto 4:<input type="file" name="F4" size="25" class="boton"><br>
		</td>
y no se como hacerlo
He estado viendo unos post que usan algo asi como form
Código:
<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br>
  <input name="userfile[]" type="file"><br>
  <input name="userfile[]" type="file"><br>
  <input type="submit" value="Send files">
</form>
ylo recogen con un bucle for ,pero no he podido encontrar ningun ejemplo completo de upload multiple .... Bueno a ver si alguien me puede echar una mano y decirme como recojolos 4 campos input file y como los meto en la Db.
Os lo agradezco de antemano
  #2 (permalink)  
Antiguo 24/02/2005, 14:59
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 15 años, 6 meses
Puntos: 6
Creas tantos campos file como quieras pero se llaman todos de la misma manera, pero ademas llevar los corchetes como en tu ejemplo: userfile[] porque le indicas que son del mismo tipo y te llega cuando envias el formulario como un array de 0 a n campos userfile

podes tratarlo asi
Código PHP:
for($i=0;$i<count($userfile);$i++){
    
      
//  $userfile[$i] es un archivo especifico, lo tratas por separado

O lo mismo con un foreach
Código PHP:
foreach($userfile as $file){
// $file es una archivo especifico.

Suerte
  #3 (permalink)  
Antiguo 25/02/2005, 02:08
 
Fecha de Ingreso: octubre-2004
Mensajes: 230
Antigüedad: 13 años, 1 mes
Puntos: 0
Hola y gracias Lalo por responderme, a ver no me aclaro mucho con lo que me decias, veras yo tengo este codigo para subir una imagen
Código:
<?php 
$conexion = mysql_connect("localhost","root","") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("test",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca. 
// archivo temporal (ruta y nombre). 
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ; 
// leer del archvio temporal .. el binario subido. 
// "rb" para Windows .. Linux parece q con "r" sobra ... 
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal))); 
// Obtener del array FILES (superglobal) los datos del binario .. nombre, size y tipo. 
$binario_nombre=$_FILES['archivo']['name']; 
$binario_peso=$_FILES['archivo']['size']; 
$binario_tipo=$_FILES['archivo']['type']; 
$consulta_insertar = "INSERT INTO catalogo (id , foto, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('','$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo',)"; 
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos."); 
echo'<h2>Datos insertados</h2>';
echo'<a href="listar_imagenes.php">Ver la Galeria</a>';
//header("location: listar_imagenes.php");  // si ha ido todo bien 
//exit; 
?>
entonces como se implementaria el codiigo para subir 4 imagenes?
seria algo asi? si los he llamado foto[]
Código:
for($i=0;$i<count($foto);$i++){ 
     
     $foto[$i] = $_FILES['foto']['tmp_name'];

}
me puedes echar una mano...Gracias
  #4 (permalink)  
Antiguo 25/02/2005, 06:38
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 15 años, 6 meses
Puntos: 6
Maso maso.....casi...
Cambialo por esto.
Código PHP:
for($i=0;$i<count($foto);$i++){ 
     
     
$foto $_FILES['foto'][$i]['tmp_name'];


o por esto:
Código PHP:
foreach($_FILES['foto'] as $fotoFile)
      
$foto $fotoFile['tmp_name'
Suerte
  #5 (permalink)  
Antiguo 25/02/2005, 09:03
 
Fecha de Ingreso: octubre-2004
Mensajes: 230
Antigüedad: 13 años, 1 mes
Puntos: 0
Lalo, tengo este formulario
Código:
<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Envia estas fotos:<br />
  <input name="foto[]" type="file" /><br />
  <input name="foto[]" type="file" /><br />
  <input name="foto[]" type="file" /><br />
  <input name="foto[]" type="file" /><br />
  <input type="submit" value="Enviar" />
</form>
y este es el archivo que lo sube y lo mete en la Db

Código PHP:
<?php  
$conexion 
mysql_connect("localhost","root","") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("test",$conexion) or die("No se puede seleccionar BD"); 
for(
$i=0;$i<count($foto);$i++){ 
     
    
$foto $_FILES['foto'][$i]['tmp_name'];
    
$f[$i]=addslashes(fread(fopen($foto[$i], "rb"), filesize($foto[$i])));
    
/*$f_nombre[$i]=$_FILES['foto.$i']['name']; 
    $f_peso[$i]=$_FILES['foto.$i']['size']; 
    $f_tipo[$i]=$_FILES['foto.$i']['type'];*/
}
$consulta_insertar "INSERT INTO blob (id , foto1 , foto2, foto3, foto4) VALUES ('','$f0','$f1','$f2','$f3')"
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos."); 
echo
'<h2>Datos insertados</h2>';
echo
'<a href="listar_imagenes.php">Ver la Galeria</a>';
?>
ahora no me da error, pero me da el mensaje
"No se pudo insertar los datos en la base de datos." me puedes ayudar
  #6 (permalink)  
Antiguo 25/02/2005, 09:21
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 15 años, 6 meses
Puntos: 6
Estas tratando mal a $foto
Código PHP:
$f[$i]=addslashes(fread(fopen($foto[$i], "rb"), filesize($foto[$i]))); 
ya que $foto es solamente un string y no un array. Sacale el [$i]. Ademas en el insert estas tratando mal a las variables. No son $f0,$f1.....sino $f[0], $f[1].

Ademas en el die() de las consultas, dentro ponele mysql_error() para saber que paso.

Suerte
__________________
"Vivir....solo cuesta Vida"
  #7 (permalink)  
Antiguo 25/02/2005, 13:29
 
Fecha de Ingreso: octubre-2004
Mensajes: 230
Antigüedad: 13 años, 1 mes
Puntos: 0
Bueno le he echo los cambios que me dijiste y lo deje asi
Código PHP:
<?php  
$conexion 
mysql_connect("localhost","root","") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("test",$conexion) or die("No se puede seleccionar BD"); 
for(
$i=0;$i<count($foto);$i++){ 
     
    
$foto $_FILES['foto'][$i]['tmp_name'];
    
$f[$i]=addslashes(fread(fopen($foto"rb"), filesize($foto)));
}
//insertamos los datos en la BD. 
$consulta_insertar "INSERT INTO blob (id , foto1 , foto2, foto3, foto4) VALUES ('','$f[0]','$f[1]','$f[2]','$f[3]')"
mysql_query($consulta_insertar,$conexion) or die(mysql_error()); 
echo
'<h2>Datos insertados</h2>';
echo
'<a href="listar_imagenes.php">Ver la Galeria</a>'
?>
y me lanza este error
Cita:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'blob (id , foto1 , foto2, foto3, foto4) VALUES ('','','','','')
es como si no recogiera('', '$f[0]','$f[1]','$f[2]','$f[3]')
  #8 (permalink)  
Antiguo 26/02/2005, 07:20
 
Fecha de Ingreso: octubre-2004
Mensajes: 230
Antigüedad: 13 años, 1 mes
Puntos: 0
Bueno ya lo corregi....era el nomble de la tabla que no se podia llamar blob....ahora me introduce una fila pero no me mete ninguna imagen , me sale en el campo [blob 0 Bytes]....porque puede ser???
  #9 (permalink)  
Antiguo 28/02/2005, 06:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Revisa $f[$i] si tiene valor .. es decir fopen() está abriendo el archivo .. o $foto si toma la ruta y nombre del archivo esperado (ahí veras el nombre "temporal" que le dá PHP .. no el original que lo tendrías en "name" no en "tmp_name")

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.