Voglio dare una risposta qui perché anch'io ho affrontato lo stesso problema: vogliamo l'elemento $ _FILES disponibile come parte dello stesso post di un altro modulo. La mia risposta si basa su @mrtnmgs, tuttavia nota i commenti aggiunti a quella domanda.
Primo: Dropzone pubblica i suoi dati tramite ajax
Solo perché si utilizza l' formData.append
opzione significa comunque che è necessario affrontare le azioni UX, ovvero tutto ciò accade dietro le quinte e non è un tipico post di modulo. I dati vengono inviati al tuourl
parametro.
In secondo luogo: se si desidera quindi imitare un post di un modulo, è necessario archiviare i dati pubblicati
Ciò richiede il codice lato server per memorizzare il tuo $_POST
o$_FILES
in una sessione che è disponibile per l'utente su un altro caricamento della pagina poiché l'utente non andrà alla pagina in cui vengono ricevuti i dati pubblicati.
Terzo: è necessario reindirizzare l'utente alla pagina in cui vengono utilizzati questi dati
Ora hai pubblicato i tuoi dati, archiviati in una sessione, devi visualizzarli / agire per l'utente in una pagina aggiuntiva. Devi inviare anche l'utente a quella pagina.
Quindi per il mio esempio:
[Codice Dropzone: utilizza 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';
})
},
});