我想在这里提供一个答案,因为我也遇到了同样的问题——我们希望 $_FILES 元素可以作为同一篇文章的一部分作为另一个表单的一部分。我的回答是基于@mrtnmgs 但注意到添加到该问题的 cmets。
首先:Dropzone 通过 ajax 发布其数据
仅仅因为您使用formData.append 选项仍然意味着您必须处理用户体验操作 - 即这一切都发生在幕后,而不是典型的表单发布。数据已发布到您的 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';
})
},
});