>  기사  >  백엔드 개발  >  PHP를 사용하여 파일 다운로드 구현

PHP를 사용하여 파일 다운로드 구현

WBOY
WBOY원래의
2016-07-29 09:16:081007검색

다음은 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);
		}
	}
?>

저작권: 이 글은 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

위 내용은 내용의 측면을 포함하여 파일 다운로드를 구현하기 위해 PHP를 사용하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:멤캐시 메모다음 기사:멤캐시 메모