Hola amigos de entre desarrolladores :)
Estoy usando el plugin JQuery Upload File de hayageek, obtenido desde: http://hayageek.com/docs/jquery-upload-file.php.
He intentado usar el <div>
que carga los archivos dentro de un <form>
para poder enviar otra información junto con los archivos, tengo la opción autoSubmit: false
, y cuando doy click para enviar el formulario llamo la función startUpload();
Mi problema es que al momento de dar click para enviar el formulario sólo se envían los <input>
del formulario, y los archivos cargados no son enviados, al lado del servidor tengo el siguiente código para saber si llegan los archivos y los campos del formulario:
print_r($_POST); pring_r($_FILES);
Si cambio la opción autoSubmit: true
, si se envían los archivos junto con los campos del formulario.
Nota:
la alerta dentro de onSubmit no es ejecutada.
De ante mano muchas gracias por su tiempo y colaboración :)
A continuación les presento mi código:
<--------------------------------------------- HTML ------------------------------------------->
<form class="form-horizontal" id="form-editar-slider-ajax" method="post">
<input type="hidden" name="idImagen" id="idImagen" readonly="readonly">
<div class="form-group">
<label for="inputName" class="control-label col-xs-2">Titulo:</label>
<div class="col-xs-10">
<input type="name" id="tituloImagen" name="tituloImagen" class="form-control" placeholder="Titulo">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2">Imagen:</label>
<div class="col-xs-10" id="cargador">
<div id="fileuploader">Cargar imagen</div>
</div>
</div>
<div class="form-group">
<div class="col-xs-offset-2 col-xs-8">
<button type="submit" id="btn-editar-slider-ajax" class="btn btn-success">Guardar Cambios</button>
</div>
</div>
</form>
<--------------------------------- JAVASCRIPT - PLUGIN ------------------------------------>
<script type="text/javascript">
var uploadObj = $("#fileuploader").uploadFile({
url: "../controller/editarSliderAjax", //url donde se enviará la petición
multiple: false, //defino que no se puedan arrastrar y soltar mas de 1 archivo
allowedTypes: "png,jpg,jpeg", // extensiones permitidas
fileName: "myfile", //nombre del archivo a enviar por $_Files
showDelete: false, //mostrar botón eliminar
showDone: false, //ocultar botón de Hecho
showProgress: true, //mostrar barra de progreso
showPreview: true, //mostrar previsualización de las imagenes a cargar
autoSubmit: false, //deshabilitar el envio del archivo automaticamente, para poder ser enviado se utiliza la función startUpload()
showStatusAfterSuccess: true, //mostrar estado despues de haber cargado correctamente las imagenes
maxFileCount: 1, //número máximo de archivos a subir
maxFileSize: 3145728, //tamaño máximo permitido de los archivos en bytes, en MB: 3MB
maxFileCountErrorStr: "Acción no permitida, el número máximo de archivos a subir es: ", //string que aparece al momento de tener un error del número máximo de archivos
dragDropStr: "<span><b> Arrastra & Suelta los Archivos</b></span>", //string que aparece al momento de tener un error de arrastrar y soltar varios archivos cuando la opción multiple está en false
sizeErrorStr: "Acción no permitida, el tamaño máximo del archivo es: ", //string que aparece cuando los archivos superan el tamaño máximo permitido
extErrorStr: "Acción no permitida, las extensiones válidas son: ", //string que aparece cuando existe un error en las extensiones de los archivos a cargar
cancelStr: "Cancelar", //string del botón cancelar
uploadButtonClass:"btn btn-info", //clase del botón de carga, se definió una clase de bootstrap
dragdropWidth: "100%", //defino el ancho del area donde se arrastra y sueltan los archivos
statusBarWidth: "100%", //defino el acho de la barra de estado.
//Datos del formulario dinámico, estos son los datos que se envian además de las imagenes, se recuperan con
// $_POST['ID_ESPECIFICADO']
dynamicFormData:function()
{
var id = $("#idImagen").val(); //capturo el id de la imagen cargado en el input oculto
var titulo = $("#tituloImagen").val(); //capturo el titulo cargado en el input.
// los datos que se van a enviar
var data = {
idImagen: id, //id de la imagen
tituloImagen: titulo //titulo de la imagen
};
alert(data['idImagen']);
alert(data['tituloImagen']);
return data; //debo retornar data para poder que se envien junto con las imagenes.
},
onSuccess:function(files,data,xhr,pd) //función que se llama despues de haber subido los archivos.
{
$("#mensaje").html(data); // Mostrar la respuestas del script PHP.
},
onSubmit:function()
{
alert("Envié Archivos");
}
});
// al dar clic en guardar cambios al momento de editar una imagen del slider
// ejecuto el plugin uploadFile.
$('btn-editar-slider-ajax').click(function(){
uploadObj.startUpload();
});</script>