Я хочу внести здесь ответ, поскольку я тоже столкнулся с той же проблемой - мы хотим, чтобы элемент $ _FILES был доступен как часть той же публикации, что и другая форма. Мой ответ основан на @mrtnmgs, однако отмечает комментарии, добавленные к этому вопросу.
Во-первых: Dropzone публикует свои данные через ajax
Тот formData.append
факт, что вы используете эту опцию, по-прежнему означает, что вы должны выполнять действия UX - то есть все это происходит за кулисами и не является типичной формой публикации. Данные публикуются по вашему url
параметру.
Во-вторых: если вы хотите имитировать форму сообщения, вам необходимо сохранить опубликованные данные
Для этого требуется код на стороне сервера для сохранения вашего сеанса $_POST
или $_FILES
сеанса, который доступен пользователю при загрузке другой страницы, поскольку пользователь не будет переходить на страницу, на которой получены опубликованные данные.
В-третьих: вам нужно перенаправить пользователя на страницу, где действуют эти данные
Теперь вы разместили свои данные, сохранили их в сеансе, вам нужно отобразить / выполнить действие для пользователя на дополнительной странице. Вам также необходимо отправить пользователя на эту страницу.
Итак, для моего примера:
[Код Dropzone: использует 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';
})
},
});