Ich möchte hier eine Antwort einbringen, da auch ich mit demselben Problem konfrontiert bin. Wir möchten, dass das Element $ _FILES als Teil desselben Beitrags wie ein anderes Formular verfügbar ist. Meine Antwort basiert auf @mrtnmgs, bemerkt jedoch die Kommentare, die zu dieser Frage hinzugefügt wurden.
Erstens: Dropzone veröffentlicht seine Daten über Ajax
Nur weil Sie die formData.append
Option verwenden, bedeutet dies immer noch, dass Sie die UX-Aktionen angehen müssen - dh dies geschieht alles hinter den Kulissen und ist kein typischer Formularbeitrag. Daten werden in Ihren url
Parameter gebucht .
Zweitens: Wenn Sie daher einen Formularbeitrag nachahmen möchten, müssen Sie die veröffentlichten Daten speichern
Dies erfordert serverseitigen Code zum Speichern Ihrer $_POST
oder $_FILES
einer Sitzung, die dem Benutzer auf einer anderen Seite zur Verfügung steht, da der Benutzer nicht zu der Seite wechselt, auf der die veröffentlichten Daten empfangen werden.
Drittens: Sie müssen den Benutzer auf die Seite umleiten, auf der diese Daten verarbeitet werden
Nachdem Sie Ihre Daten veröffentlicht und in einer Sitzung gespeichert haben, müssen Sie sie für den Benutzer auf einer zusätzlichen Seite anzeigen / bearbeiten. Sie müssen den Benutzer auch auf diese Seite senden.
Also für mein Beispiel:
[Dropzone-Code: Verwendet 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';
})
},
});