Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/01/2013, 14:16
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 7 meses
Puntos: 1567
Respuesta: Borrar un registro de un array de input file multiple

Lo probé en local y si funcionó

html

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Html5</title>
  5.  
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8.  
  9. span{
  10. cursor: pointer;
  11. }
  12.  
  13. /*]]>*/
  14. <script type="text/javascript">
  15. //<![CDATA[
  16. /* script */
  17. function cantidad(){
  18. var x=document.getElementsByName("archivos[]");
  19. alert(x.length);
  20. return false;
  21. }
  22. function borrar(elid){
  23. document.getElementById(elid).setAttribute('name',null);
  24. document.getElementById(elid).disabled = true;
  25. }
  26. function activar(elid){
  27. document.getElementById(elid).setAttribute('name','archivos[]');
  28. document.getElementById(elid).disabled = false;
  29. }
  30.  
  31. //]]>
  32. </head>
  33.  
  34. <form action="subir_varios.php" method="post" enctype="multipart/form-data">
  35. <p>Archivo uno<br />
  36. <input name="archivos[]" type="file" id="uno"/> <span onclick="borrar('uno')">borrar</span> | <span onclick="activar('uno')">habilitar</span>
  37. </p>
  38. <p>Archivo dos<br />
  39. <input name="archivos[]" type="file" id="dos" /> <span onclick="borrar('dos')">borrar</span> | <span onclick="activar('dos')">habilitar</span>
  40. </p>
  41. <p>Archivo tres<br />
  42. <input name="archivos[]" type="file" id="tres" /> <span onclick="borrar('tres')">borrar</span> | <span onclick="activar('tres')">habilitar</span>
  43. </p>
  44. <p>
  45. <input type="submit" name="procesar_subida" value="Subir" /> <input type="reset" value="restablecer" />
  46. </p>
  47. </form>
  48. </body>
  49. </html>

php

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>upload multiple php</title>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. <style type="text/css">
  8. /*<![CDATA[*/
  9. body{
  10. font-size: 11pt;
  11. font-family: verdana, sans-serif;
  12. color: #252525;
  13. }
  14. /*]]>*/
  15. </style>
  16. </head>
  17. <body>
  18. <?php
  19. if (isset($_POST['procesar_subida'])) {
  20.     $campos_file = 0;
  21.     $archivos_enviados = 0;
  22.     $archivos_movidos = 0;
  23.     $archivos_subidos = array();
  24.     $directorio_destino = dirname(__file__) . '/subidos/'; //directorio de destino (0777)
  25.     for($i = 0; $i < count($_FILES['archivos']['name']); $i++) {
  26.         $campos_file++;      
  27.         if ($_FILES['archivos']['name'][$i] != '') {
  28.             $archivos_enviados++;
  29.             $archivos_subidos[] = $_FILES['archivos']['name'][$i];
  30.             if (move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $directorio_destino . $_FILES['archivos']['name'][$i])) {
  31.                 $archivos_movidos++;
  32.             }
  33.         }
  34.     }
  35.    
  36.     echo "\n<div>\n<p><b>Estadísticas:</b></p>\n";
  37.     echo "Número de campos file es $campos_file.<br/>\n";
  38.     echo "Número de archivos enviados por post es $archivos_enviados.<br/>\n";
  39.     echo "Número de archivos movidos correctamente $archivos_movidos.<br/>\n";
  40.     echo "Los nombres de archivo subidos son <br/>\n<b>" . implode('<br />', $archivos_subidos) . "</b>\n</div>\n";
  41. }
  42. ?>
  43. <p><a href="<?php echo $_SERVER['HTTP_REFERER']; ?>">Enviar otros</a></p>
  44. </body>
  45. </html>
El php es muy básico y no limita por extension, mimeType ó tamaño


No funcionaría si usamos el tributo multiple (@navegante no hace ninguna referencia al mismo) en nuestro input file, pero si, si lo hacemos a partir de varios campos file.

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.