php header()函數實現下載功能


一、
<?php
    header('Content-Disposition:attachment'); 
    readfile("w.jpg");
?>


header('Content-Disposition: attachment'); 設置 http  報文頭,告訴瀏覽器它所接收的文件的 Content-Disposition 屬性爲 attachment ,這樣瀏覽器將直接顯示接收的內容,而是將接收的內容保存到磁盤。
執行腳本將會彈出下載對話框,提示保存文件,保存的文件名爲該腳本的文件名。
<?php
    header('Content-Disposition:attachment;filename:w.jpg'); 
    readfile("w.jpg");
?>


filename:w.jpg指定保存文件名爲w.jpg
二、
<?php 
    readfile("w.jpg");
?>


瀏覽器顯示亂碼。
<?php 
    readfile("w");
?>


w 和 w.jpg 是同一個文件,只是去掉了 .jpg 後綴。瀏覽器一樣顯示亂碼。
但是直接將 文件 w 用瀏覽器打開或window自帶的圖片瀏覽器打開將會正常顯示圖片。說明本地文件 w 用瀏覽器打開時是經過文件內部的標識來判斷文件類型,並解析出來顯示。
三、
下面的代碼可在瀏覽器直接顯示(圖片、pdf 等)。
<?php
header("Content-Type:image/jpeg");
readfile("w");//w爲圖片文件
?>


Content-Type:image/jpeg 告訴瀏覽器這是一張圖片,你老老實實將它解析出圖片顯示出來。
若是出現下面的狀況:
<?php
header("Content-Type:application/pdf");
readfile("w");//w爲圖片文件
?>
瀏覽器看到 Content-Type:application/pdf 後,就知道本身接收的內容是一個pdf文件,就按照pdf來解析,但人家 w 明明不是 pdf 啊,沒辦法,按規定來,各類亂碼輸出。