PHP實(shí)現(xiàn)瀏覽器文件下載圖片或者php文件需要通過(guò)header來(lái)輸出下載否則會(huì)進(jìn)行解析無(wú)法正確的下載文件哦,下面的我們就來(lái)看看吧。
超鏈接下載
如果瀏覽器支持超鏈接的方式下載文件,會(huì)在點(diǎn)擊超鏈接的時(shí)候自動(dòng)下載文件。
下面我們來(lái)測(cè)試一下通過(guò)超鏈接下載文件:
<a href="/Uploads/test.zip">通過(guò)超鏈接的方式下載文件</a><br>
當(dāng)我們點(diǎn)擊的時(shí)候如下所示:
超鏈接下載文件
通過(guò)超鏈接下載圖片:
我們通過(guò)超鏈接下載圖片時(shí),會(huì)直接在瀏覽器打開(kāi)顯示,然后我們需要再存儲(chǔ)到指定路徑保存下來(lái):
<a href="/Uploads/QC8054R7QPGQ_1000x500.jpg">通過(guò)超鏈接的方式下載圖片</a><br>
效果是這樣的:
超鏈接下載圖片
通過(guò)程序下載
HTML端一行代碼
<a href="download.php?filename=QC8054R7QPGQ_1000x500.jpg">通過(guò)程序的方式來(lái)下載圖片</a>
download.php代碼
我們是通過(guò)Header請(qǐng)求頭來(lái)發(fā)送文件下載信息,指定下載的是附件,下載后的文件名,content-length來(lái)指定文件的大小,然后通過(guò)readfile函數(shù)來(lái)讀取文件內(nèi)容而實(shí)現(xiàn)文件下載:
<?php
$filename = $_GET['filename'];
header('content-disposition:attachment;filename='. basename($filename));
header('content-length:'. filesize($filename));
readfile($filename);
效果如下: