PHP : echo text message as file download

PHPมีเทคนิคเล็กๆน้อยๆสำหรับใครที่ต้องการ echo ข้อความออกมา แต่ต้องการให้คนอื่น download เป็นไฟล์มา แทนที่จะแสดงผลในหน้าจอครับ วิธีการง่ายๆคือ แทนที่เราจะ echo ข้อความออกมาเฉยๆ ก็ให้เราใส่ header เข้าไปก่อนการ echo ตามนี้ครับ

download text as file
จะเห็นว่าก่อนการ echo มีการเซ็ต header เพื่อทำให้ข้อความของเรากลายเป็นไฟล์ครับ ชื่อไฟล์ก็เปลี่ยนตามสะดวก แต่ให้สังเกตตรงส่วนของ Content-Length นะครับ ทำไมผมต้อง comment ออกไป เพราะว่าเราไม่รู้ขนาดของไฟล์ที่แท้จริง เนื่องจากเราเป็นแค่ข้อความธรรมดาเท่านั้น ก็เลยปล่อยว่างไว้ได้ครับ

เสร็จแล้ว ง่ายๆเลย หวังว่าจะมีประโยชน์บ้างนะครับ :)

สำหรับใครที่ไม่สะดวกพิมพ์ ก็ให้ copy code ด้านล่างนี้ไปนะครับ (พอดีว่าสีมันไม่สวย เลยมาใส่ท้ายบทความแทน)

$filename = ‘file.txt';
header(“Cache-Control: public”);
header(“Content-Description: File Transfer”);
//header(“Content-Length: “. filesize(“$filename”).”;”);
header(“Content-Disposition: attachment; filename=$filename”);
header(“Content-Type: application/octet-stream; “);
header(“Content-Transfer-Encoding: binary”);
echo ‘This is a message but downloaded as a file.';