网站附件太大的处理方法

snh102 By snh102 at 2025-01-16 • 暂不可见      举报

被下载附件占满宽带,是站长的奇大耻辱啊!下面,附上解决方法,限制下载速度,都轻车路熟的,能用代码解决的,这都不算什么难事。一个PHP文件就行了,哪里需要自建网盘。

教程开始

新建一个 index.php 代码如下

<?php
error_reporting(0);
header('Content-type:text/html;charset=utf-8');
$doby = '<p>第一段</p><p>第二段</p><h2>本地下载</h2><p><a href="vv.php?zip=/member/dedecms-utf8.rar">本地下载</a></p><p>第三段</p>';
echo $doby;
exit();
?>

从跳转页下载,没毛病。

再新建一个 vv.php 代码如下

<?php
error_reporting(0);
$zip = isset($_GET['zip']) ? $_GET['zip'] : '';
if (!empty($zip)) {
	$local_file = dirname(__FILE__).$zip;
	//将附件重命名
	if (strpos($local_file,'.rar')) {
		$download_file = 'download.rar';
	} elseif (strpos($local_file,'.7z')) {
		$download_file = 'download.7z';
	} elseif (strpos($local_file,'.txt')) {
		$download_file = 'download.txt';
	} elseif (strpos($local_file,'.gz')) {
		$download_file = 'download.gz';
	} elseif (strpos($local_file,'.bz2')) {
		$download_file = 'download.bz2';
	}else{
		$download_file = 'download.zip';
	}
	//设置最大下载速率(=> 300,5 kb/s)
	$download_rate = 300.5;
	if(file_exists($local_file) && is_file($local_file)) {
		// 发送 headers
		header('Cache-control: private');
		header('Content-Type: application/octet-stream');
		header('Content-Length: '.filesize($local_file));
		header('Content-Disposition: filename='.$download_file);
		// flush 内容
		flush();
		// 打开文件流
		$file = fopen($local_file, "r");
		while (!feof($file)) {
			// 发送当前部分文件给浏览者
			print fread($file, round($download_rate * 1024));
			// flush 内容输出到浏览器端
			flush();
			ob_flush();
			//防止PHP或web服务器的缓存机制影响输出
			// 终端1秒后继续
			sleep(1);
		}
		// 关闭文件流
		fclose($file);
	} else {
		echo 'Error: 你来慢了,链接不存在或失效!';exit();
	}
	exit();
}
echo 'Internal Server Error!';
exit();
?>

这个下载页啊,我把反抓删除了,发挥你的想象,加写条件限制就很完美了。

附件下载

本地下载

不用瞎折腾,懒人包送上,还有继续往下看。

没有作用

上面,肯定是没有作用的。因为下载链接没加密,还能直接下载啊!上伪静态规则,禁止直接下载。Nginx伪静态规则如下

location ~ ^/(member)/(.*)\.(zip|rar|7z|gz|bz2)$ {
	return 403;
}

禁止附件目录运行指定脚本就行了。当然了,还可以加密,Base64加密没用,得上秘钥的那种才行。你看百度加密链接,就没人能够把它破解,参考教程如下

有可逆转的对称加密方法,连PHP的Base64加密都不香了

确实,加配置、OSS、CDN加速等,烧钱都能解决,但是,这是不花钱就能解决的事情啊。

调用方法

源码都给你了,关于调用方法,你可以找AI问问嘛。

温馨提示

内容由用户共同创建和维护,并不代表织梦爱好者论坛立场!
建议您独自对内容进行评估,核实并咨询相关的专业人士!

网站附件太大的处理方法网站附件太大的处理方法网站附件太大的处理方法网站附件太大的处理方法网站附件太大的处理方法+30  30 个回复 | 最后更新于 2025-01-16
该部分是隐藏区

登录后查看回复

该部分是隐藏区

登录后方可回帖

Loading...