我希望能在这里做出回答,因为我也曾遇到过同样的问题 - 我们想要将 $_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();
});
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';
})
},
});