php實現文件下載
㈠ 如何實現php點擊時下載txt文件功能 詳細
php 點擊下載txt 文件 由於現在的瀏覽器已經可以識別格式為txt 的文檔格式,所以如果只是給txt 文檔做一 個文字鏈接的話,可能只是打開一個新窗口顯示txt 文件的內容,並不能實現點擊下載的目 的。We have to do something else. 當然這個問題的解決辦法也可以是你將你的txt 文件改名為瀏覽器不認識的文件,比如 rar,這樣的話點擊,瀏覽器不認識就只好讓用戶下載了。 下面這個文件就是通過設置header 設置文檔的格式來實現點擊下載的目的,將上個頁面傳 遞過來的文件點擊可以下載。 接著第二個header函數設置了要下載的文件,注意這里filename是不包含路徑的文件名, 所以用basename 過濾掉路徑名。這個 filename 的值將來就是點擊下載後彈出對話框裡面的 文件名,如果帶路徑的話,彈出對話框的文件名就是未知的,這個要注意,我就犯了這個錯 誤,後來憑 經驗自己改了,居然對了。 最後就是 readfile,將文件流輸出到瀏覽器,這樣就實現了 txt 文件的下載,其他類型的類似。
㈡ php實現文件下載代碼
簡單的文件下載只需要使用HTML的連接標記<a>,並將屬性href的URL值指定為下載的文件即可。所示:
<a href=」http://www.*****.net/download/book.rar」>下載文件</a>
如果通過上面的代碼實現文件下載,只能處理一些瀏覽器不能默認識別的MIME類型文件,例如當訪問book.rar文件時,瀏覽器並沒有直接打開,而是彈出一個下載提示框,提示用戶「下載」還是「打開」等處理方式。但如果需要下載後綴名為.html的網頁文件、圖片文件及PHP程序腳本文件等,使用這種連接形式,則會將文件內容直接輸出到瀏覽器中,並不會提示用戶下載。
為了提高文件的安全性,不希望在<a>標簽中給出文件的鏈接,則必須向瀏覽器發送必要的頭信息,以通知瀏覽器將要進行下載文件的處理。PHP使用header()函數發送網頁的頭部信息給瀏覽器,該函數接收一個頭信息的字元串作為參數。文件下載需要發送的頭信息包括以下三部分,通過調用三次header()函數完成。以下載圖片test.gif為例,需要發送的頭信息的所示:
header(『Content-Type:imge/gif'); //發送指定文件MIME類型的頭信息
header(『Content-Disposition:attachment; filename=」test.gif」『); //發送描述文件的頭信息,附件和文件名
header(『Content-Length:3390′); //發送指定文件大小的信息,單位位元組
如果使用header()函數向瀏覽器發送了這三行頭信息,圖片test.gif就不會直接在瀏覽器中顯示,而讓瀏覽器將該文件形成下載的形式。在函數header()中,「Content-Type」指定了文件的MIME類型,「Content_Disposition」用於文件的描述,值「attachment;
filename=」test.gif」」說明這是一個附件,並且指定了下載後的文件名,「Content_Length」則給出了被下載文件的大小。
設置完頭部信息以後,需要將文件的內容輸出到瀏覽器,以便進行下載。可以使用PHP中的文件系統函數將文件內容讀取出來後,直接輸出給瀏覽器。最方便的是使用readfile()函數,將文件內容讀取出來直接輸出。下載文件test.gif的所示:
<?php
$filename = "test.gif";
header('Content-Type:image/gif'); //指定下載文件類型
header('Content-Disposition: attachment; filename="'.$filename.'"'); //指定下載文件的描述
header('Content-Length:'.filesize($filename)); //指定下載文件的大小
//將文件內容讀取出來並直接輸出,以便下載
readfile($filename);
?>
上面如果碰到中文名字就會無法正常下載了,對於中文名字下載文件我又找到一個文件下載實例代碼
<?php
header("Content-type:text/html;charset=utf-8");
// $file_name="cookie.jpg";
$file_name="聖誕狂歡.jpg";
//用以解決中文不能顯示出來的問題
$file_name=iconv("utf-8","gb2312",$file_name);
$file_sub_path=$_SERVER['DOCUMENT_ROOT']."marcofly/phpstudy/down/down/";
$file_path=$file_sub_path.$file_name;
//首先要判斷給定的文件存在與否
if(!file_exists($file_path)){
echo "沒有該文件文件";
return ;
}
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);
//下載文件需要用到的頭
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".$file_name);
$buffer=1024;
$file_count=0;
//向瀏覽器返回數據
while(!feof($fp) && $file_count<$file_size){
$file_con=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_con;
}
fclose($fp);
?>
header("Content-type:text/html;charset=utf-8")的作用:在伺服器響應瀏覽器的請求時,告訴瀏覽器以編碼格式為UTF-8的編碼顯示該內容
關於file_exists()函數不支持中文路徑的問題:因為php函數比較早,不支持中文,所以如果被下載的文件名是中文的話,需要對其進行字元編碼轉換,否則file_exists()函數不能識別,可以使用iconv()函數進行編碼轉換
$file_sub_path() 我使用的是絕對路徑,執行效率要比相對路徑高
Header("Content-type: application/octet-stream")的作用:通過這句代碼客戶端瀏覽器就能知道服務端返回的文件形式
Header("Accept-Ranges: bytes")的作用:告訴客戶端瀏覽器返回的文件大小是按照位元組進行計算的
Header("Accept-Length:".$file_size)的作用:告訴瀏覽器返回的文件大小
Header("Content-Disposition: attachment; filename=".$file_name)的作用:告訴瀏覽器返回的文件的名稱
以上四個Header()是必需的
fclose($fp)可以把緩沖區內最後剩餘的數據輸出到磁碟文件中,並釋放文件指針和有關的緩沖區
㈢ PHP實現文件下載
2種方法
1直接做個超鏈接,地址為文件的地址
<ahref="文件地址">下載</a>
2流輸出
<?php
$file=fopen('文件地址',"r");
header("Content-Type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:".filesize('文件地址'));
header("Content-Disposition:attachment;filename=文件名稱");
echofread($file,filesize('文件地址'));
fclose($file);
?>
推薦第二種
因為第一種方法只能下載瀏覽器不能解析的文件,比如rar啊,腳本文件之類。如果文件是圖片或者txt文檔,就會直接在瀏覽器中打開
而第二種方法是直接輸出的文件流,不存在上述問題
㈣ PHP中怎麼用代碼實現文件下載
CI框架:
前台:a.php <a href="download/export">download</a>
後台:download.php
function export(){
//把js,css的路徑文件名填充下面的$url和$fname就可以了
//至於html文件,先在後台生成一個html文件,然後下載就可以了
$fname=date('YmdHis').'.xls';
$url='./xls/'.$fname;
$this->excel_m->write($url);
$file = fopen($url,"r"); // 打開文件
// 輸入文件標簽
header('Content-Encoding: utf-8');
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: ".filesize($url));
header('Content-Transfer-Encoding: binary' );
header("Content-Disposition: attachment; filename=" .$fname); //以真實文件名提供給瀏覽器下載
header('Pragma: no-cache');
header('Expires: 0');
//輸出文件內容
echo fread($file,filesize($url));
fclose($file);
}
㈤ 怎樣用多文件php實現多文件下載
好可憐啊,誰給你的任務,這個是不可能的,和框架、語言都沒關系,是不是你的上級看錯了文檔啊,人家要求多個文件用zip打包下載(比如把文檔中的「別忘了用zip」看成「別用zip」)
這種只能js同時彈出多窗口了,例如
<formclass="download_form"target="download_url_1"action="download_url_1"></form>
<formclass="download_form"target="download_url_2"action="download_url_2"></form>
...
<buttononclick="$('form.download_form').each(function(){this.submit();})"type="button">點</button>
只要下載是正常的,這種彈出會在用戶操作後(下載或取消)自動消失的。但是用戶要一個一個點還是很差勁的用戶體驗。
window.open也行,但是容易受瀏覽器彈窗設置影響,所以不建議。
㈥ php中怎麼實現文件下載功能
兩種方法:
1.直接做個超鏈接,地址為文件的地址
<ahref="文件地址">下載</a>2.流輸出
<?php
$file=fopen('文件地址',"r");
header("Content-Type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:".filesize('文件地址'));
header("Content-Disposition:attachment;filename=文件名稱");
echofread($file,filesize('文件地址'));
fclose($file);
?>推薦第二種
因為第一種方法只能下載瀏覽器不能解析的文件,比如rar啊,腳本文件之類。如果文件是圖片或者txt文檔,就會直接在瀏覽器中打開。
而第二種方法是直接輸出的文件流,不存在上述問題。
你可以檢查一下你傳值過來的路徑是否正確,還有,流輸出後面不要再進行任何操作了。
拓展資料:
集成開發環境是一種集成了軟體開發過程中所需主要工具的集成開發環境,其功能包括但不僅限於代碼高亮、代碼補全、調試、構建、版本控制等。一些常見的PHP IDEs如下:
Zend Studio:商業版,Zend官方出品,基於eclipse
Eclipsewith PDT:免費
Coda:商業版,針對Mac用戶
NetBeans:免費,功能強大
PHP Storm:商業版
AptanaStudio:免費
PhpEd:商業版
KomodoIDE/Edit:IDE為商業版,Edit可免費使用
Adobe Dreamweaver:商業版
除去集成開發環境,具備代碼高亮功能的常見文本編輯器因其輕巧靈活也常被選作開發工具,例如:Notepad++、Editplus、SublimeText、Everedit(國人開發)等等。
PHP的特性包括:
1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。
2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,
PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。
3. PHP支持幾乎所有流行的資料庫以及操作系統。
4. 最重要的是PHP可以用C、C++進行程序的擴展!
參考資料:網路:PHP
㈦ PHP怎麼樣實現文件夾的整體下載
列出這個文件里的目錄結構及文件。再一個一個下下來。
㈧ 怎樣才能用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點擊時下載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實現文件下載代碼~
echo "<a href='$file'>".$file."</a>"需要絕對路徑,而且注意目錄是不可以下載的。
<?php
$root="d:/";
if(is_dir($root)){
$openHandle=opendir($root);
while(false!==($file=readdir($openHandle))){
if(!is_dir($root.$file))
echo "<a href='$root$file'>".$file."</a><br/>";
}
closedir($openHandle);
}
else {
echo "文件夾不存在";
}
?>