本文目錄一覽:
- 1、PHP如何下載文件
- 2、如何實現php點擊時下載txt文件功能?
- 3、PHP如何實現批量下載功能
- 4、PHP典型模塊與項目實戰大全:PHP文件下載的原理及實現
- 5、怎樣才能用PHP語言實現網頁中的下載文件功能
- 6、菜鳥求助!php里如何實現下載功能?
PHP如何下載文件
// 下載文件 文件用絕對路徑
ob_clean();
header(‘Pragma: public’);
header(‘Last-Modified:’.gmdate(‘D, d M Y H:i:s’) . ‘GMT’);
header(‘Cache-Control:no-store, no-cache, must-revalidate’);
header(‘Cache-Control:pre-check=0, post-check=0, max-age=0’);
header(‘Content-Transfer-Encoding:binary’);
header(‘Content-Encoding:none’);
header(‘Content-type:multipart/form-data’);
header(‘Content-Disposition:attachment; filename=”‘.$filename.'”‘); //設置下載的默認文件名
header(‘Content-length:’. filesize($dfile)); //要下載的文件
$fp = fopen($dfile, ‘r’);
while(connection_status() == 0 $buf = @fread($fp, 8192)){
echo $buf;
}
fclose($fp);
@unlink($dfile);
@flush();
@ob_flush();
exit();
如何實現php點擊時下載txt文件功能?
由於現在的瀏覽器已經可以識別格式為txt的文檔格式,所以如果只是給txt文檔做一個文字鏈接的話,可能只是打開一個新窗口顯示txt文件的內容,並不能實現點擊下載的目的。We have to do something else.當然這個問題的解決辦法也可以是你將你的txt文件改名為瀏覽器不認識的文件,比如rar,這樣的話點擊,瀏覽器不認識就只好讓用戶下載了。下面這個文件就是通過設置header設置文檔的格式來實現點擊下載的目的,將上個頁面傳遞過來的文件點擊可以下載。?php$filename=”/somepath/”.$_GET[‘file’].”.txt”;//要下載的文件名header(“Content-Type:application/force-download”);header(“Content-Disposition:attachment;filename=”.接著第二個header函數設置了要下載的文件,注意這裡filename是不包含路徑的文件名,所以用basename過濾掉路徑名。這個filename的值將來就是點擊下載後彈出對話框裡面的文件名,如果帶路徑的話,彈出對話框的文件名就是未知的,這個要注意,我就犯了這個錯誤,後來憑經驗自己改了,居然對了。最後就是readfile,將文件流輸出到瀏覽器,這樣就實現了txt文件的下載,其他類型的類似。
PHP如何實現批量下載功能
原理很簡單,通過一個含有圖片地址的數組循環,然後使用PHP的file_get_contents函數取得圖片,在使用file_put_contents函數把圖片保存下來。就這樣簡單,希望能幫到你.順便提供一組PHP批量下載圖片文件代碼供你參考:set_time_limit(0);//設置PHP超時時間$imagesURLArray
=
array_unique($imagesURLArray
);foreach($imagesURLArray
as
$imagesURL)
{
echo
$imagesURL;
echo
“
PHP典型模塊與項目實戰大全:PHP文件下載的原理及實現
PHP文件下載的原理及實現
通常文件下載過程是十分簡單的 建立一個鏈接指向到目標文件就可以了 例如下面的鏈接
a href=// xxx /xxx rar點擊下載文件/a
但是 實際情況可能會稍複雜 比如需要用戶填寫完整註冊信息後才可以下載該文件 這時最先想到的是使用Redirect的方式 下面介紹兩種方式
( )用Redirect方式 先檢查表格是否已經填寫完畢和完整 然後將鏈接指到該文件 這樣用戶就可以下載 請看下面的示例代碼
?php
/*文件功能 檢查變數form是否完整*/
if($form){
//重新定向瀏覽器指向
Header( Location: // // xxx /xxx rar )
exit;
}
?
( )根據下載文件的序號來查找 鏈接的形式如下
a href= // xxx /download php?id= 點擊下載文件/a
上面的鏈接使用ID方式接收要下載文件的編號 然後再用Redirect的方式連接到真實的文件鏈接
以上這兩種方法雖然實現了文件的下載功能 但是缺點是直接暴露了文件所屬的路徑 而且沒有防盜鏈的功能 所以上面的方式是簡單直接但存在安全隱患的文件下載方式 在PHP中 通常是利用header()函數和fread()函數來實現安全的文件下載
例如 需要下載的是一個文件名為xxx rar的文件 首先創建文件是download php的PHP文件 通過前面的例子很容易通過文件的ID號從資料庫中得到待下載文件的真實位置 在獲得文件的真實存儲位置後 可以通過header()函數的location參數直接重定向到這個文件 但是這樣仍然是不安全的 因為某些下載軟體還是可以通過重定向分析獲得該文件的位置信息 因此需要用另外一種方法 就是PHP的文件處理API函數 它是通過fread()函數把文件直接輸出到瀏覽器提示用戶下載 這樣所有的處理都是在伺服器端完成的 因此用戶就無法獲得文件具體存儲位置信息的 示例代碼如下
?
$file_name = xxx rar ; //下載文件名
$file_dir = /up/ ; //下載文件存放目錄
//檢查文件是否存在
if (! file_exists ( $file_dir $file_name )) {
echo 文件找不到 ;
exit ()
} else {
//打開文件
$file = fopen ( $file_dir $file_name r )
//輸入文件標籤
Header ( Content type: application/octet stream )
Header ( Accept Ranges: bytes )
Header ( Accept Length: filesize ( $file_dir $file_name ) )
Header ( Content Disposition: attachment; filename= $file_name )
//輸出文件內容
//讀取文件內容並直接輸出到瀏覽器
echo fread ( $file filesize ( $file_dir $file_name ) )
fclose ( $file )
exit ()
}
?
【代碼解讀】
上述代碼中 程序發送Header信息是用來告訴Apache和瀏覽器下載文件的相關信息的 content type的含義代表文件MIME類型是文件流格式 如果在Apache配置裡面把文件的MIME類型設為application/octet stream(如add application/octet stream xxx rar) 那麼瀏覽器(客戶端)就會知道 這是一個文件流格式的文件並提示用戶下載 Accept Ranges是一個響應頭標 它允許伺服器指明將在給定的偏移和長度處 為資源組成部分的接受請求 該頭標的值被理解為請求範圍的度量單位 Content Length是指定包含於請求或響應中數據的位元組長度 例如 Content Length: Content Disposition:attachment是用來告訴瀏覽器 文件是可以當做附件被下載 下載後的文件名稱為$file_name該變數的值
運行download php文件 效果如圖 所示 從圖中可以看到文件按照預想的方式被提示下載 單擊 保存 按鈕將文件保存在本地
圖 PHP文件安全下載
返回目錄 PHP典型模塊與項目實戰大全
編輯推薦
Java Web開發詳解
PHP Web開發學習實錄
lishixinzhi/Article/program/PHP/201311/21519
怎樣才能用PHP語言實現網頁中的下載文件功能
?php
/*
$file——文件名
$_SERVER[‘DOCUMENT_ROOT’]—–伺服器跟目標
down——自定義下載文件的文件夾
獲取文件在文件夾裡面的位置
必須是絕對路徑
Content-Type: application/force-download 強制瀏覽器下載
*/
$file=”xxxx.rar”;
$file=$_SERVER[‘DOCUMENT_ROOT’].”/down/”.$file ;
if(is_file($file)) {
header(“Content-Type: application/force-download”);
header(“Content-type: application/octet-stream”);
header(“Content-Disposition: attachment; filename=”.basename($file));
readfile($file);
exit;
}else{
echo “文件不存在!”;
exit;
}
?
菜鳥求助!php里如何實現下載功能?
用header來實現
給你一個示例代碼。無論什麼功能,分三步:
1.格式
2.設置Content-Disposition屬性
3.讀文件,完成功能
?php
// 下載的文件是pdf格式
header(‘Content-type: application/pdf’);
//重命名為downloaded.pdf
header(‘Content-Disposition: attachment; filename=”downloaded.pdf”‘);
// 源文件為original.pdf
readfile(‘original.pdf’);
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293790.html