使用PHP實作檔案下載

WBOY
發布: 2016-07-29 09:16:08
原創
1002 人瀏覽過

       這裡寫瞭如何使用PHP實現文件下載的程序,主要是為了方便自己查找,也為了方便大家查閱學習(當然網上也有其他類似的代碼)。其中詳細解析看原程式註解。

PHP實作檔案下載程式:

FileDownService.class.php

<?php
	//封装到类
	class FileDownService {
		//下载文件的函数

		//对函数的说明
		//参数说明 $file_name 文件名
		//         $file_sub_dir 下载文件的子路径 "/xxx/xxx/"
		function down_file($file_name, $file_sub_dir) {
			//如果文件是中文的
			//原因 php文件函数,比较古老,需要对中文转码 gb2312
			$file_name=iconv("utf-8","gb2312", $file_name);

			//使用绝对路径
			$file_path=$_SERVER[&#39;DOCUMENT_ROOT&#39;].$file_sub_dir.$file_name;

			//1.判断文件是否存在
			if(!file_exists($file_path)) {
				echo &#39;文件不存在!&#39;;
				return;
			}

			//2.打开文件
			$fp=fopen($file_path, "r");

			//3.获取下载文件的大小
			$file_size=filesize($file_path);

			//限制下载文件的大小
			/*if($file_size>10*1024*1024) {
				echo "<script language=&#39;javascript&#39;>window.alert('文件过大')</script>";
				return ;
			}*/

			//4.添加http的响应信息
			//返回的是文件
			header("Content-type: application/octet-stream");
			//按照字节大小返回
			header("Accept-Ranges: bytes");
			//返回文件大小
			header("Accept-Length: ".$file_size);
			//这里客户端的弹出对话框,对应的文件名
			header("Content-Disposition: attachment; filename=".$file_name);

			//5.向客户端回送数据
			$buffer=1024;

			//为了下载的安全,我们最好做一个文件字节读取计数器
			$file_count=0;
			//这句话用于判断文件是否结束
			while(!feof($fp) && $file_size-$file_count>0) {
				$file_data=fread($fp, $buffer);
				//统计读了多少个字节
				$file_count+=$buffer;
				//把部分数据回送给浏览器
				echo $file_data;
			}

			//6.关闭文件
			fclose($fp);
		}
	}
?>
登入後複製

rrreee

🎜🎜博主🎜🎜 🎜 以上就介紹了使用PHP實作檔案下載,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。 🎜 🎜 🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!