[Php-avanzado] consulta subir archivos
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Mar Nov 5 18:11:06 ART 2013
Hola Maximiliano,
como estás armando un formulario por cada archivo, PHP no tiene "que
saber" sobre cuál es la $_POST['a'] correcta, porque solo se envía un
formulario por cada submit.
Habrá tantos formularios como archivos.
Par que la página sea HTML válido, los formularios tienen que tener un
ID distinto cada uno... podrías generar como nombre B + variable, y la
variable irla cambiando en cada ciclo.
El mar, 05-11-2013 a las 18:30 -0200, Maximiliano Lizondo escribió:
> Hola, tengo una duda con respecto a un ejercicio sobre subir archivos
> y listarlos. El enunciado era el siguiente:
>
>
> "Realice un script que permita subir archivos a un directorio y luego
> los muestre listados en una página con un link para su descarga."
>
>
> Pego el código para facilitar la explicación de mi duda:
>
>
> <?php
> $directorio="subidas/";
> if (ISSET($_POST['btn_enviar']))
> {
> $archivo=$_FILES['userfile']['name'];
> if (is_uploaded_file($_FILES['userfile']['tmp_name']))
> {
> $path=$directorio.$archivo;
> //$path=$directorio.$_FILES['userfile']['name'];
> //$archivo=$_FILES['userfile']['name'];
> $msg="El archivo {$archivo} fue cargado satisfactoriamente";
> //print('<br><br>El archivo '.'<b>'.$archivo.'</b>'.' fue cargado
> satisfactoriamente.');
> move_uploaded_file($_FILES['userfile']['tmp_name'],$path);
> }
> else
> {
> $msg="Posible ataque durante la subida de archivos. Nombre de archivo:
> {$archivo}";
> //print('Posible ataque durante la subida de archivos. Nombre de
> archivo: '.$archivo);
> }
> }
> if(isset($_POST['Borrar']))
> {
> unlink($directorio.$_POST['a']);
> $msg = "Archivo borrado: {$_POST['a']}";
> }
> $contenido=scandir($directorio);
> array_shift($contenido);
> array_shift($contenido);
> ?>
>
>
> <!DOCTYPE html>
>
>
> <html>
> <head>
> <title> GUIA 3 - Ejercicio 1</title>
> </head>
>
> <body>
> <div><h1>Ejercicio sobre UPLOAD</h1></div>
>
> <form enctype="multipart/form-data" action="avanz_3_1.php"
> method="post">
>
> <fieldset>
> <input type="hidden" name="MAX_FILE_SIZE" value="100000"/>
> Enviar este archivo:<input name="userfile" type="file"/>
> <input type="submit" name="btn_enviar" value="Subir archivo"/>
> </fieldset>
> </form>
>
> <hr>
> <br>
> <ul>
> <?php
> foreach ($contenido as $nombre_archivo)
> {
> ?>
> <li>
> Archivo: <a href="<?=$directorio?><?=$nombre_archivo?>"><?=
> $nombre_archivo?></a>
> <form id="b" name="b" method="post">
> <input name="a" id="a" type="hidden" value="<?=$nombre_archivo?>" />
> <input type="submit" name="Borrar" value="Borrar" />
> </form>
> </li>
> <?php
> }
> ?>
> </ul>
>
> </body>
> </html>
>
>
> La duda es la siguiente: por cada archivo subido se genera un link y
> un formulario con un botón "Borrar" para borrar dicho archivo y un
> "input" de tipo "hidden" (name="a") que contiene el nombre de dicho
> archivo. Pero noté que todos los formularios e inputs que se generan,
> tienen los mismos nombres para cada archivo subido. El tema es que
> cuando se hace click en algún botón "Borrar", se borra el archivo
> correspondiente a dicho botón. ¿Cómo hace el intérprete PHP para saber
> a qué input "a" me estoy refiriendo, cuando le paso el parámetro la
> variable $_POST['a']? se entiende la duda?
>
>
> --
> Ing. Maximiliano Andrés Lizondo
> * Teléfonos: 0223-493-5488 (particular) - 2236-321708 (móvil)
> * Perfil profesional en
> LinkedIn: http://ar.linkedin.com/pub/maximiliano-andr%C3%
> A9s-lizondo/61/906/344
> _______________________________________________
> Lista de correo: Php-avanzado
> Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> Administración Web: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> Desubscripción: php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado