ฉันต้องการมีส่วนร่วมในการตอบคำถามที่นี่เช่นกันเมื่อฉันเผชิญกับปัญหาเดียวกัน - เราต้องการให้องค์ประกอบ $ _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';
})
},
});