Foros del Web » Programando para Internet » Javascript »

Validar tipos de archivos antes de subiros al servidor

Estas en el tema de Validar tipos de archivos antes de subiros al servidor en el foro de Javascript en Foros del Web. Buen dia amigos, tengo un script para subir archivos el cual el usuario puede añadir o eliminar campos tipo="file" en caso de que no se ...
  #1 (permalink)  
Antiguo 30/04/2015, 22:40
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Validar tipos de archivos antes de subiros al servidor

Buen dia amigos, tengo un script para subir archivos el cual el usuario puede añadir o eliminar campos tipo="file" en caso de que no se sabe cuantos archivos desea subir.
Tengo otro script para validar cuales tipos de archivos se deben adjuntar, funciona muy bien cuando se esta utilizando el primer campo tipo file pero cuando se va a hacer en el segundo en adelante la validacion de tipod de archivos se pierde y ya no se ejecuta este script. Alguien me puede ayudar por favor en guiarme en donde estoy fallando, se lo agradeceria mucho.

Script que agrega o elimina dinamicamente los campos tipo file:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. var numero = 0;  
  3. evento = function (evt) {  
  4. return (!evt) ? event : evt;
  5. }
  6. addCampo = function () {  
  7. nDiv = document.createElement('div');  
  8. nDiv.className = 'archivo';
  9. nDiv.id = 'file' + (++numero);  
  10. nCampo = document.createElement('input');
  11. nCampo.name = 'archivos[]';  
  12. nCampo.type = 'file';  
  13. a = document.createElement('a');  
  14. a.name = nDiv.id;  
  15. a.href = '#';  
  16. a.onclick = elimCamp;  
  17. a.innerHTML = 'Eliminar';
  18. nDiv.appendChild(nCampo);  
  19. nDiv.appendChild(a);
  20. container = document.getElementById('adjuntos');
  21. container.appendChild(nDiv);
  22. }  
  23. elimCamp = function (evt){
  24. evt = evento(evt);
  25. nCampo = rObj(evt);
  26. div = document.getElementById(nCampo.name);
  27. div.parentNode.removeChild(div);
  28. }  
  29. rObj = function (evt) {
  30. return evt.srcElement ? evt.srcElement : evt.target;
  31. }
  32. </script>

Script que valida el tipo de archivo permitido a adjuntar:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.             function validar(f) {
  3.                 enviar = /\.(jpg|pdf)$/i.test(f.archivos.value);
  4.                 if (!enviar)    alert("seleccione imagen");
  5.                 return enviar;
  6.             }
  7.  
  8.             function limpiar()  {
  9.                 f = document.getElementById("archivos[]");
  10.                 nuevoFile = document.createElement("input");
  11.                 nuevoFile.id = f.id;
  12.                 nuevoFile.type = "file";
  13.                 nuevoFile.name = "archivos[]";
  14.                 nuevoFile.value = "";
  15.                 nuevoFile.onchange = f.onchange;
  16.                 nodoPadre = f.parentNode;
  17.                 nodoSiguiente = f.nextSibling;
  18.                 nodoPadre.removeChild(f);
  19.                 (nodoSiguiente == null) ? nodoPadre.appendChild(nuevoFile):
  20.                     nodoPadre.insertBefore(nuevoFile, nodoSiguiente);
  21.             }
  22.            
  23.             function checkear(f)    {
  24.                 function no_prever() {
  25.                     alert("El formato del archivo no es valido. Adjunte archivos con extension .(JPG,PDF)");
  26.                     limpiar();
  27.                 }
  28.                 (/\.(jpg|pdf)$/i.test(f.value)) ? prever() : no_prever();
  29.             }
  30.         </script>

Campo tipo file que se muestra inicialmente para adjuntar archivos:
Código HTML:
Ver original
  1. <form name="formu" id="formu" method="post" enctype="multipart/form-data">
  2. <dl>
  3. <dt><label>Archivos a Subir:</label></dt>  
  4. <dd><div id="adjuntos">
  5. <input type="file" name="archivos[]" id="archivos[]" onchange="checkear(this)"><br />
  6. </div></dd>
  7. <dt><a href="#" onClick="addCampo()">Subir otro archivo</a></dt>
  8. <dd><br><input type="submit" value="Enviar" id="enviar" name="enviar" /></dd>
  9. </dl>
  10. </form>
  #2 (permalink)  
Antiguo 01/05/2015, 11:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Validar tipos de archivos antes de subiros al servidor

En tu lugar, usaría la propiedad multiple para subir varios archivos a la vez y al llegar un array de estos al lado del servidor, simplemente lo recorro y valido cada archivo.

Saludos

P.D.: No olvides que también puedes usar la propiedad accept, aunque, a fin de cuentas, la validación más importante se debe de realizar en el lado del servidor.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 01/05/2015 a las 11:54 Razón: Posdata
  #3 (permalink)  
Antiguo 01/05/2015, 18:46
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Validar tipos de archivos antes de subiros al servidor

Amigo alexis, gracias por tu respuesta, pero no, en realidad debo hacerlo como pienso pero no se que me falta hacer en el script para que me valide todos. Gracias.
  #4 (permalink)  
Antiguo 01/05/2015, 19:57
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Validar tipos de archivos antes de subiros al servidor

Solo por curiosidad, ¿por qué no optas por la otra forma que es más sencilla y te dará el mismo resultado?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 01/05/2015, 20:06
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Validar tipos de archivos antes de subiros al servidor

Por requerimientos solicitados por la persona que me asesora en la tesis de la universidad
  #6 (permalink)  
Antiguo 01/05/2015, 20:36
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Validar tipos de archivos antes de subiros al servidor

¿En dónde está la función prever? Además, no es necesario que coloques una función dentro de otra, puede estar afuera y ser convocada desde cualquier parte del código.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, html, input, servidor
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 10:57.