我想在这里提供一个答案,因为我也遇到了同样的问题——我们希望 $_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';
})
},
});