PHP - Subida de varios archivos a la vez

 
Vista:

Subida de varios archivos a la vez

Publicado por Enrique (2 intervenciones) el 27/01/2017 10:52:25
Buenos días,

Tengo un problema y me gustaría que me pudierais ayudar. Os paso a comentar:

Tengo un formulario con varios inputs, entre los que se encuentran 5 de tipo file. Consigo que los archivos se suban, pero el formulario se me ejecuta en bucle y no puedo pararlo. He intentado con un unset($_FILES), $_FILES="";... pero se me sigue ejecutando el formulario.

Os dejo mi código por si pudierais echarle un vistazo. Es algo farragoso y "primitivo", perdón:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
include './inc/functions.php';
 
if(!verificarSesion("id_user")){
    header("location:index.php");
}
 
 
$mng="";
$classError="";
 
 
if (isset($_POST['formNoti']) && !empty($_POST['titulo'])) {
    extract($_POST); //$titulo, $texto, $ciudad, $imagen[], $publico, $email
 
 
    if (!empty($_FILES['imagen']['name'][0])) {
 
        $name = $_FILES['imagen']['name'][0];
        $size = $_FILES['imagen']['size'][0];
        $type = $_FILES['imagen']['type'][0];
        $error = $_FILES['imagen']['error'][0];
        $tmp_name = $_FILES['imagen']['tmp_name'][0];
        $name1 = $_FILES['imagen']['name'][1];
        $size1 = $_FILES['imagen']['size'][1];
        $type1 = $_FILES['imagen']['type'][1];
        $error1 = $_FILES['imagen']['error'][1];
        $tmp_name1 = $_FILES['imagen']['tmp_name'][1];
        $name2 = $_FILES['imagen']['name'][2];
        $size2 = $_FILES['imagen']['size'][2];
        $type2 = $_FILES['imagen']['type'][2];
        $error2 = $_FILES['imagen']['error'][2];
        $tmp_name2 = $_FILES['imagen']['tmp_name'][2];
        $name3 = $_FILES['imagen']['name'][3];
        $size3 = $_FILES['imagen']['size'][3];
        $type3 = $_FILES['imagen']['type'][3];
        $error3 = $_FILES['imagen']['error'][3];
        $tmp_name3 = $_FILES['imagen']['tmp_name'][3];
        $name4 = $_FILES['imagen']['name'][4];
        $size4 = $_FILES['imagen']['size'][4];
        $type4 = $_FILES['imagen']['type'][4];
        $error4 = $_FILES['imagen']['error'][4];
        $tmp_name4 = $_FILES['imagen']['tmp_name'][4];
 
        $name_array = explode(".", $name);
        $ext_archivo = mb_strtolower(end($name_array), "UTF-8");
        $name_array1 = explode(".", $name1);
        $ext_archivo1 = mb_strtolower(end($name_array1), "UTF-8");
        $name_array2 = explode(".", $name2);
        $ext_archivo2 = mb_strtolower(end($name_array2), "UTF-8");
        $name_array3 = explode(".", $name3);
        $ext_archivo3 = mb_strtolower(end($name_array3), "UTF-8");
        $name_array4 = explode(".", $name4);
        $ext_archivo4 = mb_strtolower(end($name_array4), "UTF-8");
 
        subirArchivo("noti", $name, $size, $type, $error, $tmp_name, $ext_archivo);
        subirArchivo("noti", $name1, $size1, $type1, $error1, $tmp_name1, $ext_archivo1);
        subirArchivo("noti", $name2, $size2, $type2, $error2, $tmp_name2, $ext_archivo2);
        subirArchivo("noti", $name3, $size3, $type3, $error3, $tmp_name3, $ext_archivo3);
        subirArchivo("noti", $name4, $size4, $type4, $error4, $tmp_name4, $ext_archivo4);
 
     }
}
 
?>
 
<?php $title="Nueva noticia"?>
<?php include './col/header.php';?>
 
<span class="mng_<?=$classError?>"><?=$mng?></span>
 
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" class="formbtnderecha">
    <div>
        <label>Título:</label>
        <input type="text" name="titulo" required autofocus>
    </div>
    <textarea name="texto" class="ckeditor"></textarea>
    <div>
        <label>Ciudad:</label>
        <input type="text" name="ciudad" required>
    </div>
    <div>
        <label>Imagen principal:</label>
        <input type="file" name="imagen[]">
    </div>
    <div>
        <label>Imagen 1:</label>
        <input type="file" name="imagen[]">
    </div>
    <div>
        <label>Imagen 2:</label>
        <input type="file" name="imagen[]">
    </div>
    <div>
        <label>Imagen 3:</label>
        <input type="file" name="imagen[]">
    </div>
    <div>
        <label>Imagen 4:</label>
        <input type="file" name="imagen[]">
    </div>
 
    <input type="checkbox" name="visible">Público
    <input type="checkbox" name="email">Email
    <input type="submit" value="Guardar" name="formNoti" class="btn btnderecha">
</form>
 
 
 
 
<script src="sitemedia/js/ckeditor/ckeditor.js" type="text/javascript"></script>
<?php include './col/footer.php';?>




Muchas gracias de antemano!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.084
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Subida de varios archivos a la vez

Publicado por xve (6933 intervenciones) el 27/01/2017 13:13:39
Hola Enrique, no me queda claro esto que comentas que se ejecuta en bucle... segun yo lo veo, solo se ejecuta una vez cuando le des al botón de enviar el formulario, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Subida de varios archivos a la vez

Publicado por Enrique (2 intervenciones) el 27/01/2017 16:52:25
Me salta en el navegador el típico mensaje de :

Confirmar reenvío de formulario
La página que buscas ha utilizado la información que has especificado. Volver a la página podría provocar la repetición de alguna acción. ¿Quieres continuar?


Los archivos se me guardan correctamente, pero me sale este mensaje. Os paso el código de la función "subirArchivo", por si ayuda:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function subirArchivo($carpeta,$name,$size,$type,$error,$tmp_name,$ext_archivo){
 
    $size_max=1048576; //1MB = 1048576 bytes
    $extPermitidas=array("jpg","jpeg","png","gif");
    $typePermitidos=array("image/jpeg","image/pjpeg","image/png","image/gif");
 
    if( $error==0 && $size<=$size_max && in_array($ext_archivo, $extPermitidas) && in_array($type, $typePermitidos)){
 
        if(file_exists("upload_".$carpeta)){
 
            $rootImagen="upload_".$carpeta."/".time()."_".$name;
 
            if(move_uploaded_file($tmp_name, $rootImagen)){
 
                return array(true,$rootImagen);
 
            }else{
                return array(false,3);
            }
 
        }else{
            return array(false,2);
        }
 
    }else{
        return array(false,1);
    }
 
}

Muchas gracias de nuevo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar