คำแนะนำในเอกสารวิธีใช้ PHP เกี่ยวกับ PHP ที่เรียกใช้การดาวน์โหลดผ่านส่วนหัวนั้นค่อนข้างง่าย และมีบทความเกี่ยวกับเรื่องนี้น้อยมากบนอินเทอร์เน็ต และบทความจำนวนมากไม่สามารถบรรลุผลตามที่ต้องการได้ วันนี้ฉันจะพูดถึงหัวข้อนี้ด้วย หากคุณรู้สึกว่ามีการปรับปรุงเมื่อเทียบกับบทความบางบทความบนอินเทอร์เน็ตฉันก็จะพอใจมาก
จากมุมมองที่ถูกต้อง เอกสาร PHP มีความถูกต้องที่สุด เนื่องจากมีรายการคำสั่งสามข้อที่จำเป็นในการทริกเกอร์การดาวน์โหลดไฟล์ข้อความอย่างกระชับ โดยยึดตามตัวอย่าง:
ต่อไปนี้เป็นเนื้อหาที่ยกมา:
// เราจะแสดง
ส่วนหัวของ PDF('Content-type: application/pdf');
// มันจะเรียกว่า
ส่วนหัวของ download.pdf('Content-Disposition: attachment; filename="downloaded.pdf"');
// แหล่งที่มาของ PDF อยู่ในไฟล์ original.pdf
readfile('Original.pdf');
ประโยคทั้งสามนี้ถูกต้อง แต่ปัญหาที่ไม่คาดคิดอาจเกิดขึ้นได้ง่ายระหว่างการใช้งานจริง หากคุณเป็นคนที่ระมัดระวังมาก คุณสามารถหลีกเลี่ยงปัญหาเหล่านี้ได้อย่างง่ายดาย แต่ฉันไม่ใช่ ดังนั้นฉันจึงประสบปัญหาดังกล่าว ฉันจะพูดสั้น ๆ เกี่ยวกับปัญหาของฉัน
สำหรับประโยคแรก ไม่ควรพูดอะไรเลย เพียงแค่เปลี่ยนประเภทของเอกสาร ตัวอย่างเช่น หากคุณกำลังดาวน์โหลดไฟล์ txt ให้เปลี่ยนเป็น header('Content-type: application/txt' );. ประโยคที่สอง ไม่มีอะไรจะพูด เพียงแค่ตั้งชื่อเอกสารที่คุณดาวน์โหลดมา ถ้าเป็นไฟล์ txt คุณสามารถเปลี่ยนเป็น header('Content-Disposition: attachment; filename="downloaded.txt"') ;, คำถามประโยคที่สาม ยังมีอีกมาก ฟังก์ชัน readfile หมายถึงการอ่านไฟล์และส่งออกไฟล์นั้น หากเป็นไฟล์ original.txt จะต้องอยู่ในโฟลเดอร์ดาวน์โหลด สามารถเขียน readfile('downloads/ original.txt') ได้ และหากหน้าที่ส่งจะส่งออกข้อความและอักขระอื่นๆ ไฟล์ที่ดาวน์โหลดจะเป็นไฟล์ผสมของไฟล์ต้นฉบับ original.txt และข้อความที่ส่งออกโดยหน้าที่ส่ง ฉันขาดการสังเกตอย่างรอบคอบที่นี่ ทันทีที่ฉันเห็นสิ่งผิดปกติ ฉันตรวจสอบโค้ดทันที แต่ไม่พบว่าข้อความข้างต้นเป็นสิ่งที่ฉันต้องการ หลังจากค้นพบเนื้อหาส่วนนี้ คุณอาจคิดวิธีแก้ปัญหาได้อย่างรวดเร็ว ปัญหานี้ นั่นคือการปิดเอาต์พุตของเนื้อหาข้อความของหน้าที่ส่งมา ณ จุดนี้ ปัญหาได้รับการแก้ไขแล้ว และกล่องโต้ตอบการดาวน์โหลดจะถูกทริกเกอร์เมื่อมีการคลิกลิงก์ไฟล์ข้อความ