php文件下載代碼
① php里怎麼做下載文件代碼(主要是能夠在蘋果手機里。)
<ahref="a.txt"download>點擊下載a.txt文件</a>
② thinkphp的文件下載怎麼實現,急需具體的代碼
public function file_down($id){
if(empty($_GET['id'])){
redirect("文件不存在跳轉頁面");
}else{//如果要加登錄條件,這里可以自己加
$dl=D('downlist');
$map['id'] = array('eq',$_GET['id']);
$list=$dl->where($map)->find();
if ($list == false) {//文件不存在,可以跳轉到其它頁面
header('HTTP/1.0 404 Not Found');
header('Location: .');
} else {
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 3600000)." GMT");
header('Content-type:application/octet-stream', true);
echo($list["file_zip"]);//file_zip為打包文件欄位
}
}
}
//註:欄位file_zip需要使用ZipArchive打包存儲
③ 求一個簡單的PHP下載代碼
<?php
// 設置錯誤報告
error_reporting ( E_ERROR | E_NOTICE );
ini_set ( 'display_errors', 0 );
// 大文件時避免腳本執行超時
set_time_limit ( 600 );
$filename = '';
if (! empty( $_GET ['f'] )) {
$filename = $_GET ['f'];
} else {
// 未指定文件名
exit ( 'filename required.' );
}
// 這里你應該加上文件名過濾,防止跨目錄,下載不希望被下載的文件
// TODO: 文件安全處理
$file_size = -1;
$is_remote_file = ( strstr ( $filename, 'http:' ) !== false );
// 處理本地文件
if ( ! $is_remote_file ) {
$filename = dirname( __FILE__ ) . '/' . $filename; // 獲取絕對路徑
if (! file_exists( $filename )) {
exit ( 'File Not Exists.' );
}
}
// 獲取文件大小,這樣瀏覽器才能正確的知道文件大小
$file_size = intval ( sprintf ('%u', filesize ( $filename ) ) );
// 設置內存限制, readfile 是將文件讀入緩沖區的,所以會佔用文件大小的數量一樣的內存
ini_set ( 'memory_limit', '512M' );
// 關閉 gz 壓縮,部分瀏覽器在啟用 gz 的時候下載異常
if ( ini_get( 'zlib.output_compression' ) )
@ini_set ( 'zlib.output_compression', 'Off' );
// 設置內容類型報頭,告訴瀏覽器作為二進制流附件下載
header ( 'Content-Type: application/octet-stream' );
header ( 'Content-Disposition: attachment; filename="' . basename( $filename ) . '"' );
// 有時候遠程文件無法獲取其大小
if ( $file_size != -1 ) {
header ( 'Content-Length: ' . $file_size );
}
// 准備輸出文件
@readfile ( $filename );
flush ();
exit ();
這是我們實際的產品代碼的一部分。不是網上復制粘貼的。經過測試是可以正常工作的。
但是遠程文件,有時候是需要伺服器啟用設置的。也就是 URL 包裝器,如果不開啟,無法正常工作。
但是請注意,PHP5裡面readfile最大隻支持2M的文件下載。如果需要大文件支持,採用下面的代碼替換 readfile 函數:
function readfileEx($filename) {
$chunksize = 1024 * 1024; // 緩沖區塊大小
$handle = fopen($filename, 'rb');
$buffer = '';
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo ($buffer);
flush();
}
fclose($handle);
}
④ 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文件一樣可以用BT軟體打開的,放心使用,沒問題的。我以前也下過好多PHP的種子文件。
你是要讓你的裝了IIS的機器支持PHP呢還是只是單純的打開*.php的文件?
如果是要支持PHP,那麼你要裝專門的PHP解釋器。
首先你去下載php-4.3.4-Win32.zip。
下面為配置步驟:
1)將php-4.3.3RC4-Win32.zip裡面的所有文件和文件夾解壓縮並放置在C:\\php4\\文件夾中,沒有自己創建該文件夾
2)進入php4文件夾,查看根目錄和子目錄,把所有.dll文件都統統復制粘貼到C:\\WINNT\\system32(WIN2K)或C:\\WINDOWS\\system32(WINXP)中
3)把php4文件夾裡面的php.ini-dist和php.exe文件復制到
C:\\WINNT\\(WIN2K)或C:\\WINDOWS\\(WINXP)中,並將php.ini-dist文件改為php.ini
4)雙擊php.ini打開該配置文件,進行下面3個地方的修改:
1> 把extension_dir = "C:\\php4\\extensions" 改為你安裝php4的 extensions文件夾路徑
2> 把 ;cgi.force_redirect = 1 改為 cgi.force_redirect = 0
3> 把 register_globals = Off 改為 register_globals = On
4> 找到 ;Windows Extensions 段,你應該可以看到如下代碼
;
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll
具體還得看你需要載入哪些.dll文件,不過你按照下面我這樣改也行,主要是要載入的.dll文件就去掉前面的分號( ; ) :
;
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll
5)再次打開控制面板-管理工具-Internet服務管理器,在"默認web站點"上右鍵單擊,選擇"屬性"
6)選中"默認 Web 站點 屬性"窗口的"主目錄"選項卡,點擊右下角的"配置"按鈕,出現"應用程序配置"窗口,點擊"應用程序映射"下面的"添加"按鈕,添加下面的程序映射:
可執行文件: C:\\php4\\php.exe %s %s (也就是你的php4文件夾路徑)
擴展名: .php
確定完成配置!
7)切換到"默認 Web 站點 屬性"窗口的"ISAPI篩選器"選項卡,點擊右邊的"添加"按鈕,添加下面的一個篩選器:
篩選器名稱: PHP
可執行文件: C:\\php4\\sapi\\php4isapi.dll (也就是你的php4文件夾的 sapi文件夾路徑)
確定後關閉"Internet服務管理器"
8)繼續切換到"默認 Web 站點 屬性"窗口的"文檔"選項卡,點擊右邊的"添加"按鈕,添加如下"啟用默認文檔":
index.php 也可以添加 index.php3 index.php4 等等 看你的需要而定
點擊左邊的"↑"按鈕,把index.php文檔提升到最上面
現在你的IIS也支持PHP了.
PHP 是一種新型的 CGI 程序編寫語言.應該說是個嵌入式腳本文件。和ASP、JSP有很多類似的功能。唯一不同的是,ASP要整站的解釋在傳遞,而PHP則可以嵌入HTML代碼里,和HTML一起發送。要讀.PHP文件就要用PHP解釋器。現在用的是PHP V4.3.0有支持Windows和 Unix/Linux的版本。當然你還要在自己機子上虛擬主機,可以用很出名的Apache軟體。
.php可以用文本編輯器(如記事本、emeditor、phpedit等)打開。如果要運行它得安裝相應的php解釋器和web服務支持才行。
⑥ 急需一個完整的php文件下載案例代碼。
我們一般實現下載都是調用url來下載,但是遇到ie能識別打開的文件就不能用這種方式了,比如下載一個圖片、html網頁等,這時就需要編程來實現,以下php代碼可以解決:
<?
if(empty($_GET['FileName'])||empty($_GET['FileDir'])||empty($_GET['FileId'])){
echo'<script>alert("非法連接!");location.replace("index.php")</script>';exit();
}
$file_name=$_GET['FileName'];
$file_dir=$_GET['FileDir'];
$FileId=$_GET['FileId'];
$file_dir=$file_dir."/";
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);
//輸出文件內容
echofread($file,filesize($file_dir.$file_name));
fclose($file);
exit();
}
?>
⑦ php中讓文件循環下載的代碼怎麼寫
自己寫的方法 但是在中文路徑下會 出現錯誤
/*
*查看問價夾中的子文件及其子文件夾
*$path 付文件夾路徑
*return $arr_dir 文件夾中所有文件和子文件夾的信息
*/
function selDir($path){
$arr_dir = array();
if(is_file($path)){
header("Location: error.php");
exit;
}
$arr_dir = scandir($path);
foreach ($arr_dir as $v){
if($v != "." && $v != ".."){
//print "<hr>".$path.$v;
if(is_dir($path.'/'.$v)){
//print "<hr>是文件夾<hr>";
$arr_dir['dir'][] = array(
'fileUrl' => $path.'/'.$v,
'filename' => $v,
'type' => '文件夾',
'cTime' => @date('Y/m/d H:i',filectime($path.'/'.$v)+8*3600),
'mTime' => @date('Y/m/d H:i',filemtime($path.'/'.$v)+8*3600),
'filesize' => ''
);
}else{
//print "<hr>不是是文件夾<hr>";
$arr_dir['file'][] = array(
'fileUrl' => $path.'/'.$v,
'filename' => $v,
'type' => pathinfo($path.'/'.$v, PATHINFO_EXTENSION),
'cTime' => @date('Y/m/d H:i',filectime($path.'/'.$v)+8*3600),
'mTime' => @date('Y/m/d H:i',filemtime($path.'/'.$v)+8*3600),
'filesize' => filesize($path.'/'.$v)
);
}
}
}
//var_mp($arr_dir);
return $arr_dir;
}
⑧ php文件下載 先選擇保存路徑
PHP 文件下載代碼示例如下:
<?php
//調用下載函數
downloadFile("index.html");
//定義下載函數,$fname參數為下載文件名
functiondownloadFile($fname){
$rename=$fname;
$filename=$fname;
$file_path=$_SERVER["DOCUMENT_ROOT"]."/oop/".$filename;
$file=@fopen($file_path,"r");
if(!$file){
exit('sorry,nofile!');
}
set_time_limit(0);
$ua=$_SERVER["HTTP_USER_AGENT"];
$encoded_filename=urlencode($rename);
$encoded_filename=str_replace("+","%20",$encoded_filename);
header('Content-Type:application/octet-stream');
if(preg_match("/MSIE/",$ua)){
header('Content-Disposition:attachment;filename="'.$encoded_filename.'"');
}elseif(preg_match("/Firefox/",$ua)){
header('Content-Disposition:attachment;filename*="utf8'''.$rename.'"');
}else{
header('Content-Disposition:attachment;filename="'.$rename.'"');
}
while(!feof($file)){
echofread($file,50000);
}
fclose($file);
exit;
}
?>
⑨ php中強制下載文件的代碼(解決了IE下中文文件名亂碼問題)
中間遇到一個問題是提交的中文文件名直接放到header里在IE下會變成亂碼,解決方法是將文件名先urlencode一下再放入header,如下。
復制代碼
代碼如下:
<?php
$file_name
=
urlencode($_REQUEST['filename']);
header("Pragma:
public");
header("Expires:
0");
header("Cache-Control:
must-revalidate,
post-check=0,
pre-check=0");
header("Content-Type:
application/force-download");
header('Content-Type:
application/vnd.ms-excel;
charset=utf-8');
header("Content-Transfer-Encoding:
binary");
header('Content-Disposition:
attachment;
filename='.$file_name);
echo
stripslashes($_REQUEST['content']);
?>
解決PHP
Header下載文件在IE文件名中文亂碼有兩種常見的,一種是是把頁面編碼改成utf8,另一種是對中文url進入urlencode編碼就可以解決了。
解決方案一(我的頁面是utf-8編碼):
復制代碼
代碼如下:
$filename
=
"中文.txt";
$ua
=
$_SERVER["HTTP_USER_AGENT"];
$encoded_filename
=
urlencode($filename);
$encoded_filename
=
str_replace("+",
"%20",
$encoded_filename);
header('Content-Type:
application/octet-stream');
if
(preg_match("/MSIE/",
$ua))
{
header('Content-Disposition:
attachment;
filename="'
.
$encoded_filename
.
'"');
}
else
if
(preg_match("/Firefox/",
$ua))
{
header('Content-Disposition:
attachment;
filename*="utf8'''
.
$filename
.
'"');
}
else
{
header('Content-Disposition:
attachment;
filename="'
.
$filename
.
'"');
}
解決方法二
將文件名先urlencode一下再放入header,如下。
代碼如下:
復制代碼
代碼如下:
<?php
$file_name
=
urlencode($_REQUEST['filename']);
header("Pragma:
public");
header("Expires:
0");
header("Cache-Control:
must-revalidate,
post-check=0,
pre-check=0");
header("Content-Type:
application/force-download");
header('Content-Type:
application/vnd.ms-excel;
charset=utf-8');
header("Content-Transfer-Encoding:
binary");
header('Content-Disposition:
attachment;
filename='.$file_name);
echo
stripslashes($_REQUEST['content']);
?>
⑩ 有一段實現文件下載的php代碼,之前使用下載成功,但現在無法使用了
header("Content-Type:application/pdf");
注意這個的類型。。。文件不同參數不同