Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Input file y ajax

Estas en el tema de Input file y ajax en el foro de Frameworks JS en Foros del Web. Hola a todos: A ver si alguien me puede iluminar... He creado un form que dirige el valor de un input file a la página ...
  #1 (permalink)  
Antiguo 17/08/2010, 06:35
fsr
 
Fecha de Ingreso: abril-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Input file y ajax

Hola a todos:
A ver si alguien me puede iluminar... He creado un form que dirige el valor de un input file a la página check.php. En ckeck se comprueba que la extensión sea la adecuada y devuelve un mensaje. Con un sólo campo funciona perfecto pero con dos campos se vuelve loco.
Así que, si alguien puede dar con la solución le estaría agradecido.
Saludos


///////////////////////////////////////
// PAGINA FORM
///////////////////////////////////////
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prueba foto</title>
<script language="javascript" type="text/javascript" src="ajax.js"></script>
<style type="text/css">
#respuesta1{font-family:Verdana, Arial, Helvetica, sans-serif; font-size:9px; color:#7D7D7D; width:320px; align:left}

</style>


</head>

<body>
<form id="form1" name="form1" method="post" action="">
<input type="file" name="foto1" id="foto1" onblur="from(document.getElementById('foto1').valu e,'respuesta1','check.php','1')"/><br/>
<div id="respuesta1"></div>
<br />
<input type="file" name="foto2" name="foto2" onblur="from(document.getElementById('foto2').valu e,'respuesta2','check.php','2')"/><br/>
<div id="respuesta2"></div>
</form>
</body>
</html>

///////////////////////////////////////
//PAGINA CHECK.PHP
///////////////////////////////////////
<?php
$foto1 = $_GET['id'];
$pos = $_GET['pos'];
$foto_Ex = strtolower($foto1);
$foto_Ex = explode('.', $foto_Ex);
//echo $s_foto[1];
sleep(1);
if ($foto_Ex =="jpg" || $foto_Ex =="gif" || $foto_Ex =="png"){
echo '<img src="img/ok.gif" /> La imagen <strong>' .$_GET['id'] .' es de tipo correcto';
$_SESSION['pos'] = $pos;
}
else {
echo '<img src="img/error.png" /><strong>' .$_GET['id'] . "</strong> El tipo de imagen NO ES EL ADECUADO. Debe ser jpg, gif o png ".$_GET['pos'];
}
?>


///////////////////////////////////////
// PAGINA AJAX.JS
///////////////////////////////////////
function obtiene_http_request()
{
var req = false;
try
{
req = new XMLHttpRequest(); /* p.e. Firefox */
}
catch(err1)
{
try
{
req = new ActiveXObject("Msxml2.XMLHTTP");
/* algunas versiones IE */
}
catch(err2)
{
try
{
req = new ActiveXObject("Microsoft.XMLHTTP");
/* algunas versiones IE */
}
catch(err3)
{
req = false;
}
}
}
return req;
}
var miPeticion = obtiene_http_request();
//************************************************** *************************************
function from(id,ide,url,pos){
var mi_aleatorio=parseInt(Math.random()*99999999);//para que no guarde la página en el caché...
var vinculo=url+"?id="+id+"&pos="+pos+"&rand="+mi_alea torio;
//alert(vinculo);
miPeticion.open("GET",vinculo,true);//ponemos true para que la petición sea asincrónica
miPeticion.onreadystatechange=miPeticion.onreadyst atechange=function(){
if (miPeticion.readyState==4)
{
//alert(miPeticion.readyState);
if (miPeticion.status==200)
{
//alert(miPeticion.status);
//var http=miPeticion.responseXML;
var http=miPeticion.responseText;
document.getElementById(ide).innerHTML= http;

}
}else
{
document.getElementById(ide).innerHTML="<img src='img/loader.gif' title='cargando...' />";

}
}
miPeticion.send(null);

}
  #2 (permalink)  
Antiguo 17/08/2010, 10:33
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Input file y ajax

Hola:

No pierdas el tiempo con la comprobación en el servidor cuando puedes hacerlo directamente desde el navegador, pero en ninguno de los casos sería fiable, ya que solo puede estudiarse el nombre, cuando lo que interesa es el content type... te recomiendo que veas este artículo: Revisar las imágenes antes de subirlas

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 17/08/2010, 11:35
fsr
 
Fecha de Ingreso: abril-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Respuesta: Input file y ajax

Hola:
Gracias Caricatos por tu rápida respuesta. Sí es verdad que es mejor el método que me indicas, pero más allá del ejemplo que puse la duda está en poder integrar varios input files y que cuando realice la llamada, este no se quede "colgado"... por ejemplo: cada vez que se introduce una imagen la funcion de ajax sube el temporal y no espera al envío de submt; ya que si son varias imágenes el proceso es más lento si lo hicieramos al final... creo ¿o no?.

Etiquetas: ajax, javascript
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 19:55.