Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/02/2011, 14:29
Iskra
 
Fecha de Ingreso: noviembre-2010
Mensajes: 11
Antigüedad: 14 años
Puntos: 1
Respuesta: Upload asincrónicamente jquery

Aqui esta una posible solucion:

La vista quedaria como lo muestro, hay que notar que incluyo tambien el script que configura la validacion del lado cliente, y las apis que agrego puedes conseguirlas en los sitios respectivos de jquery y los plugins.

<!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>
<title>Ajax Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<script type="text/javascript" src="js/jquery-1.4.3.min.js" ></script>
<script type="text/javascript" src="js/jquery.validate.min.js" ></script>
<script type="text/javascript" src="js/jquery.form.js" ></script>
<script>


function upload(){

if($("#frmUpload").valid())

$("#frmUpload").ajaxSubmit({
dataType:'xml',
success:function(error){

if($(error).text()=="0")
alert("Extio en Carga");
else
alert("Error en Carga");
},
resetForm:true
});

}

$(document).ready(
function(){

$('#frmUpload').validate(
{
rules:{
archivo:{
required:true
}
},
messages:{
archivo:{
required:'Cargue un archivo'
}
}
});

});

</script>
</head>

<body>

<form name="frmUpload" id="frmUpload" method="post" enctype="multipart/form-data" action="upload.php" >
<table>
<tr>
<td><label for="archivo">Archivo:</label></td>
<td><input type="file" id="archivo" name="archivo" value="" /></td>
</tr>
<tr>
<td></td>
<td><input type="button" id="btnUpload" name="btnUpload" value="Guardar" onclick="upload();" /></td>
</tr>
</table>
</form>

</body>
</html>


El script de carga de archivos puede ser de la forma tradicional con la excepcion de que debemos considerar que debe enviar la respuesta al script de envio asincrono

<?php

function upload($inputName){

if(isset($_FILES[$inputName]))
$target_path = getcwd().DIRECTORY_SEPARATOR."files\\".$_FILES[$inputName]['name'];
else
return false;

if(move_uploaded_file($_FILES[$inputName]['tmp_name'], $target_path))
return true;
else
if($_FILES[$inputName]['error']==0)
return true;

return false;
}

$result = upload("archivo");
echo $result?"0":"1";

?>

Y he aqui una solucion simple al tu problema =)