php下載統計
❶ 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開發學習實錄
lishixin/Article/program/PHP/201311/21519
❷ 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的開源文檔管理程序有哪些
OpenGoo PHP開源文檔管理系統
OpenGoo是一套基於ExtJs+XAMP(Apache、PHP、Mysql)開發的開源web office。適用於任何單位或個人創建,共享,協作維護和發布它們所有內部與外部文檔。
relayb
relayb是一個Ajax目錄管理器。支持拖放操作文件和文件夾。動態載入文件結構。文件上傳提示進度條。縮略圖查看包括PDF格式,支持多用戶和多賬號。
Simple Directory Listing
Simple Directory Listing提供一個類似於apache http伺服器目錄列表的文檔管理界面。擁有復制,移動,刪除,重命名,創建文件夾/文件。上傳/下載文件,Unicode支持,縮略圖查看,RSS發布等。
CKFinder
CKFinder是一個易於使用的Ajax文件管理器。提供文件夾樹形結構(Folders tree)導航菜單,多語言支持(自動探測用),支持創建/重命名/刪除文件和文件夾,集成FCKeditor在線編輯器。
phpWebFtp
phpWebFtp是一個基於Web的Ftp客戶端,可以連接至任意Ftp伺服器。內置22種語言包。易於在Binary/ASCII兩種模式下切換。提供WYSIWYG文件編輯器用於編輯.htm文件。內置文件與目錄下載模式。支持解壓zip文件等。
CuteFlow
CuteFlow是一個基於Web的文檔流轉/工作流工具。用戶定義好一個文檔之後就會按指定的流程一步一步地轉發給列表中的每一個用戶。
Epiware
Epiware是一個AJAX支持的項目與文檔管理Web應用系統。它提供了一套完整的文件管理功能包括文檔上傳,下載,版本控制,審核,變化通知和訪問歷史列表等。Epiware還為開發團隊創建一個安全的信息交流與相互協作平台。
PHP Navigator
基於Web運用PHP+Ajax技術開發的PHP開源文檔管理系統。它具有WindowsXP風格的操作界面。使你感覺像在Windows中。
DocMgr
DocMgr是一個基於PHP+Postgresql構建的Web文檔管理系統。支持利用tsearch2對大部分流行的文檔格式進行全文索引。它同樣包含訪問控制列表,用戶許可權管理和文件多級分組功能。
SimpleDoc
SimpleDoc是一個基於web的PHP開源文檔管理系統。它的界面簡單而且直觀(以樹的結構進行管理,運用Ajax技術使得當修改內容時不需要刷新瀏覽器)。SimpleDoc不需要資料庫支持。
DocumentManager
Document Manager是一個包含許可權管理與郵件提醒功能基於Web的文檔管理器。無需要資料庫支持。
KnowledgeTree
KnowledgeTree是一個開源基於Web的文檔管理系統。它具有知識管理,文檔版本控制,分層文檔管理和支持一些流行的文件格式也可以自定文件類型等。
Owl Intranet Engine
Owl是一個多用戶的PHP開源文檔管理系統。它可對文件夾和文件設置許可權,基於角色許可權管理,具有易於使用並且簡潔的用戶操作與管理界面,能夠對文件夾和文件 進行監控,支持對文本,MS-Word和PDF文件進行全文搜索,提供下載統計功能,資料庫備份工具,新聞系統,版本控制,回收站,自定文檔類型等等。