Quiero contribuir con una respuesta aquí, ya que yo también me he enfrentado al mismo problema: queremos que el elemento $ _FILES esté disponible como parte de la misma publicación que otro formulario. Mi respuesta se basa en @mrtnmgs, sin embargo, toma nota de los comentarios agregados a esa pregunta.
En primer lugar: Dropzone publica sus datos a través de ajax
El hecho de que use la formData.append
opción significa que debe abordar las acciones de UX, es decir, todo esto ocurre detrás de escena y no es una publicación de formulario típica. Los datos se publican en su url
parámetro.
En segundo lugar: si desea imitar una publicación de formulario, deberá almacenar los datos publicados
Esto requiere un código del lado del servidor para almacenar su $_POST
o $_FILES
en una sesión que esté disponible para el usuario en otra carga de página, ya que el usuario no irá a la página donde se reciben los datos publicados.
En tercer lugar: debe redirigir al usuario a la página donde se activan estos datos.
Ahora que ha publicado sus datos, los ha almacenado en una sesión, debe mostrarlos / activarlos para el usuario en una página adicional. También debe enviar al usuario a esa página.
Entonces para mi ejemplo:
[Código de Dropzone: utiliza Jquery]
$('#dropArea').dropzone({
url: base_url+'admin/saveProject',
maxFiles: 1,
uploadMultiple: false,
autoProcessQueue:false,
addRemoveLinks: true,
init: function(){
dzClosure = this;
$('#projectActionBtn').on('click',function(e) {
dzClosure.processQueue(); /* My button isn't a submit */
});
// My project only has 1 file hence not sendingmultiple
dzClosure.on('sending', function(data, xhr, formData) {
$('#add_user input[type="text"],#add_user textarea').each(function(){
formData.append($(this).attr('name'),$(this).val());
})
});
dzClosure.on('complete',function(){
window.location.href = base_url+'admin/saveProject';
})
},
});