PHP文件下载封装函数

<?php 
	// 文件下载
	header('Content-type:text/html; charset=utf-8');
	define('ROOT_PATH', dirname(__FILE__));

	// 封装一个下载文件的函数
	function download_file($file_path) {
		// 转码
		$file_path = iconv('utf-8', 'gb2312', $file_path);
		// 判断文件是否存在
		if (!file_exists($file_path)) {
			exit('文件不存在');
		}
		// 获得文件名
		$filename = basename($file_path);
		$filesize = filesize($file_path);
		// 设定下载响应头
		header('Content-type:application/octet-stream');
		header('Accept-ranges:bytes');
		header("Content-Disposition:attachment; filename=".$filename);
		header("Accept-length:".$filesize);

		// 输出文件
		if ($filesize < 8192) {
			// 小文件
			echo file_get_contents($file_path);
		} else {
			// 大文件
			$fp = @fopen($file_path, 'r') or die();

			// 判定是否可读,然后再读
			while (!feof($fp)) {
				echo fread($fp, 1024);
			}

			// 关闭文件
			fclose($fp);
		}
	}


	download_file(ROOT_PATH."./uploads/b.txt");  //我的测试

 ?>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论

打赏作者

php小学一年级生

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值