Foros del Web » Programando para Internet » Javascript »

Upload solo jpg

Estas en el tema de Upload solo jpg en el foro de Javascript en Foros del Web. Necesito controlar que mediante un input type="file" solamente se elija un archivo de extención ".jpg", para ello tengo esta función javascript, que conseguí en este ...
  #1 (permalink)  
Antiguo 21/03/2007, 18:58
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Upload solo jpg

Necesito controlar que mediante un input type="file" solamente se elija un archivo de extención ".jpg", para ello tengo esta función javascript, que conseguí en este mismo foro:

Código HTML:
extArray = new Array(".jpg");
function LimitAttach2(form, file) {
allowSubmit = false;
if (!file) return;
while (file.indexOf("\\") != -1)
file = file.slice(file.indexOf("\\") + 1);
ext = file.slice(file.indexOf(".")).toLowerCase();
for (var i = 0; i < extArray.length; i++) {
if (extArray[i] == ext) { allowSubmit = true; break; }
}
if (allowSubmit) form.submit();
else
alert("Se permiten únicamente archivos con la extención: "
+ (extArray.join(" ")) + "\nPor favor, seleccione otro archivo "
+ "e intente de nuevo.");
}
Y esto es el formulario:

Código HTML:
 <tr>
			<td align="right" valign="top" style="color:#000;">Imágen / Logo:</td>
			<td><input name="img" type="file" id="img" size="40"></td>
		</tr>
		<tr valign="top">
			<td width="80px"></td>
		</tr>
		<tr valign="top">
			<td align="center" colspan="2"><input name="send" type="button" id="send" value="Vista previa" onclick="LimitAttach2(document.form, this.form.img.value)"></td> 


Tengo un grave problema con esto:

En IE funciona pero en FF no y no entiendo porque!


Por favor, espero que alguien pueda ayudarme...!


Saludos y gracias
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #2 (permalink)  
Antiguo 22/03/2007, 00:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Upload solo jpg

Hola Anarninquë:

Fíjate en este artículo: Checkeo de imágenes (antes de subirlas)

Se chequean 3 tipos de imágenes, pero es fácil modificarlo para solo jpg:

Código:
function checkear_extension(fichero)	{
	// definimos antes los métodos prever() y limpiar()
	(/\.jpg$/i.test(fichero.value)) ? prever() : limpiar();
}
A pie de artículo puse unos enlaces en donde se trató el tema.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 22/03/2007, 17:22
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: Upload solo jpg

Gracias caricatos, lo leere todo y probaré a implementarlo...

Luego te cuento


Saludos
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #4 (permalink)  
Antiguo 22/03/2007, 17:34
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 9 meses
Puntos: 28
Re: Upload solo jpg

No lo logro, porque no quiero que verifique un tamaño, ni quiero que me previsualice la imagen, ni tampoco que controle por php...

O sea sólo quiero que se fije si la extención es jpg / jpge y que si no lo es, de un alert y vacíe el campo...

Pero no se que parte poner y cual no del completo (en mi caso demasiado) script que me pasaste :s


Me puedes orientar un poquitin?

Saludos y gracias
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #5 (permalink)  
Antiguo 22/03/2007, 23:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Upload solo jpg

Hola:

Con un retoque podrás solucionarlo... Ya que no te vale la punción prever(), basta con que cambies todo el código por un simple return (incluso ni eso...)

Y el método limpiar() es el que debes dejarlo tal cual, pero solo limpia un campo file con id="archivo", si tiene otro id o no tiene ninguno, debes hacerlo coincidir y isto...

Código:
function limpiar()	{
	f = document.getElementById("archivo");
	nuevoFile = document.createElement("input");
	nuevoFile.id = f.id;
	nuevoFile.type = "file";
	nuevoFile.name = "archivo";
	nuevoFile.value = "";
	nuevoFile.onchange = f.onchange;
	nodoPadre = f.parentNode;
	nodoSiguiente = f.nextSibling;
	nodoPadre.removeChild(f);
	(nodoSiguiente == null) ? nodoPadre.appendChild(nuevoFile):
		nodoPadre.insertBefore(nuevoFile, nodoSiguiente);
}

function checkear_extension(fichero)	{
	function prever() {
		return;
	}

	function no_prever() {
		alert("El fichero seleccionado no es válido...");
		limpiar();
	}

	(/\.(jpg|jpeg)$/i.test(fichero.value)) ? prever() : no_prever();
}
Código:
<input type="file" name="f" id="archivo" onchange="checkear_extension(this)" />
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 18:39.