Je veux apporter une réponse ici car j'ai moi aussi été confronté au même problème - nous voulons que l'élément $ _FILES soit disponible dans le même message qu'un autre formulaire. Ma réponse est basée sur @mrtnmgs mais note les commentaires ajoutés à cette question.
Premièrement: Dropzone publie ses données via ajax
Juste parce que vous utilisez l' formData.append
option signifie toujours que vous devez vous attaquer aux actions UX - c'est-à-dire que tout se passe dans les coulisses et n'est pas un post de formulaire typique. Les données sont enregistrées dans votre url
paramètre.
Deuxièmement: si vous souhaitez par conséquent imiter une publication de formulaire, vous devrez stocker les données publiées
Cela nécessite un code côté serveur pour stocker votre $_POST
ou $_FILES
dans une session qui est disponible pour l'utilisateur sur un autre chargement de page car l'utilisateur n'ira pas à la page où les données publiées sont reçues.
Troisièmement: vous devez rediriger l'utilisateur vers la page sur laquelle ces données sont exploitées
Maintenant que vous avez publié vos données, les avez stockées dans une session, vous devez les afficher / les actionner pour l'utilisateur dans une page supplémentaire. Vous devez également envoyer l'utilisateur sur cette page.
Donc pour mon exemple:
[Code Dropzone: utilise 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';
})
},
});