Tôi muốn đóng góp một câu trả lời ở đây vì tôi cũng đã phải đối mặt với cùng một vấn đề - chúng tôi muốn phần tử $ _FILES có sẵn như là một phần của cùng một bài đăng như một hình thức khác. Câu trả lời của tôi dựa trên @mrtnmss tuy nhiên lưu ý các ý kiến được thêm vào câu hỏi đó.
Thứ nhất: Dropzone đăng dữ liệu của mình thông qua ajax
Chỉ vì bạn sử dụng formData.append
tùy chọn vẫn có nghĩa là bạn phải giải quyết các hành động UX - tức là tất cả điều này xảy ra đằng sau hậu trường và không phải là một bài mẫu điển hình. Dữ liệu được đăng lên url
tham số của bạn .
Thứ hai: Nếu bạn muốn bắt chước một bài đăng mẫu, bạn sẽ cần lưu trữ dữ liệu đã đăng
Điều này đòi hỏi mã phía máy chủ để lưu trữ $_POST
hoặc$_FILES
trong phiên có sẵn cho người dùng khi tải trang khác vì người dùng sẽ không truy cập trang nhận dữ liệu đã đăng.
Thứ ba: Bạn cần chuyển hướng người dùng đến trang nơi dữ liệu này được xử lý
Bây giờ bạn đã đăng dữ liệu của mình, lưu trữ nó trong một phiên, bạn cần hiển thị / hành động dữ liệu đó cho người dùng trong một trang bổ sung. Bạn cần phải gửi người dùng đến trang đó.
Vì vậy, ví dụ của tôi:
[Mã Dropzone: Sử dụng 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';
})
},
});