本文實(shí)例講述了php+js實(shí)現(xiàn)的無(wú)刷新下載文件功能。分享給大家供大家參考,具體如下:
服務(wù)器端頁(yè)面
步驟就是,設(shè)置頭文件參數(shù),然后讀入并輸出文件。下面代碼的file_get_contents可以使用fread,fclose代替。
download.php
<?php$filename = $_GET['filename'];$path = __DIR__."/file/".$filename;Header( "Content-type: application/octet-stream");Header( "Accept-Ranges: bytes ");Header( "Accept-Length: " .filesize($filename));header( "Content-Disposition: attachment; filename={$filename}");echo file_get_contents($filename);
前端頁(yè)面
在很多時(shí)候,我們下載文件的操作,都是在前端頁(yè)面直接點(diǎn)擊下載的,而不是專門(mén)跳轉(zhuǎn)到上面的download.php去下載。
所以我們需要在前端實(shí)現(xiàn)無(wú)刷新訪問(wèn)download.php來(lái)下載文件,通過(guò)隱藏的iframe來(lái)實(shí)現(xiàn)是不錯(cuò)的方式。下面是代碼:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><a href="javascript:download_file('http://localhost/download.php?filename=/" rel="external nofollow" 測(cè)試文件.doc/"')">下載</a><script type="text/javascript"> function download_file(url) { if (typeof (download_file.iframe) == "undefined") { var iframe = document.createElement("iframe"); download_file.iframe = iframe; document.body.appendChild(download_file.iframe); } //alert(download_file.iframe); download_file.iframe.src = url; download_file.iframe.style.display = "none"; }</script></body></html>
file_get_contents先讀取,然后echo的方式。可以使用readfile函數(shù)代替,效率更高。
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選