Foros del Web » Programando para Internet » PHP »

Ensamblar una subida múltiple de archivos

Estas en el tema de Ensamblar una subida múltiple de archivos en el foro de PHP en Foros del Web. Hola! Aunque no os lo creáis llevo meses intentando construir una subida múltiple de archivos. Me he encontrado con diversos problemas que muy poco a ...
  #1 (permalink)  
Antiguo 15/09/2012, 06:20
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 12
Ensamblar una subida múltiple de archivos

Hola!
Aunque no os lo creáis llevo meses intentando construir una subida múltiple de archivos. Me he encontrado con diversos problemas que muy poco a poco he ido solucionando, pero el último tramo se me está haciendo cuesta arriba.

Conseguí construir el código para subir una imagen, redimensionarla y que me subiese la ruta a una base de datos. Este es el código:

Código PHP:
if (isset($_POST['submit'])) { 
    if(!empty(
$_FILES['fichero']) && $_FILES['fichero']['error'] == UPLOAD_ERR_OK) {
        if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo
            
$extension explode("."$_FILES['fichero']['name']);
            if(
$_FILES['fichero']['type']=="image/jpeg" || $_FILES['fichero']['type']=="image/png" || $_FILES['fichero']['type']=="image/gif") {
            
$ruta"../Imagenes/noticias/".date("Y")."/esgrima_".time().".".$extension[1]; // Ruta de la carpeta donde se guarda, más el nombre del archivo y la extensión
                
if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta)) { // se coloca en su lugar final
                    
include('redimensionar_img.php');
                    echo 
"<b>Upload exitoso!. Datos:</b><br>";
                       echo 
"Nombre: <i><a href=\"".$ruta."\">".$_FILES['fichero']['name']."</a></i><br>";
                    echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
                    echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
                    echo 
"<br><hr><br>";
                    
                    
//Si se coloca en su lugar final se introduce la ruta en la base de datos
                    
$rutafinal substr($ruta,3);
                    
$query_imagenes "INSERT INTO tabla(ruta_imagen, id_noticia_img) VALUES ('$rutafinal','$idnoticia')";
                    
$imagenes mysql_query($query_imagenes$conexion) or die(mysql_error());
                    if (
$imagenes TRUE) {
                        echo 
"La imagen ha sido insertada correctamente en la base de datos";
                    }
                }
            } else echo 
"El archivo es una imagen con una extensión no válida";
        } 
    } 

Esto me funcionaba perfectamente, pero necesitaba subir varias imágenes en el mismo formulario, aunque no siempre el mismo número, y como IE no soporta un input file multiple, hice la siguiente función que me eliminase la información de los input que realmente no cargaban una imagen, para quedarme al final con un ARRAY que tuviese la información de todas las imágenes.

La función es la siguiente:

Código PHP:
function GetFiles() {
        
$files = array();
        if (
is_array($_FILES['fichero']['name'])) {
            for (
$i 0$i count($_FILES['fichero']['name']); ++$i) {
                
$files[] = array(
                    
'name' => $_FILES['fichero']['name'][$i],
                    
'tmp_name' => $_FILES['fichero']['tmp_name'][$i],
                    
'error' => $_FILES['fichero']['error'][$i],
                );
                
                if (
$files[$i]['error'] == 4){
                    unset(
$files[$i]);
                }
            }
            
        } else {
            
$files[] = $_FILES['fichero'];
        }
return (
$files);

Ahora, el problema que tengo (soy bastante nueva en el uso de funciones creadas por el usuario) es que no consigo utilizar los elementos que devuelve el GETFILES() para subir las diferentes imágenes.
Me dice que $files no esta definido cuando intento usarlo después de llamar a la función. He entendido que no la puedo usar ya que es una variable definida dentro de la función, pero entonces, como utilizo el resultado de GetFiles() para subir las imágenes??

Una pequeña ayuda por favor
  #2 (permalink)  
Antiguo 15/09/2012, 09:09
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
Respuesta: Ensamblar una subida múltiple de archivos

hola educacanis, (me causo gracia tu nombre bien original jaja) aqui respondi algo similar con un codigo de ejemplo que funciona:
http://www.forosdelweb.com/f18/uploa...mysql-1004835/
creo que alli usaba 10 archivos con descripcion en simultaneo pero es facilmente adaptable a tus nesesidades. por otro lado si se te complica avisa y te ayudo a revisar tu codigo para hacerlo funcionar.
(no lo hago directamente porque no tengo mucho tiempo ahora pero mas tarde entrare mas tranquilo) saludos
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: formulario, imagenes, múltiple, mysql, sql, subida, tabla, variables, usuarios
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 00:22.