比如资源存放在 upload/txt/一代大侠.txt
直接通过访问 域名/nd.php 实现下载txt。
PHP代码如下:
$file = '《一代大侠》完本 作者:雪凡.txt';
$basename = basename($file); // 返回路径中的文件名
$fileExtension = pathinfo($file, PATHINFO_EXTENSION);
$contentType = '';
switch ($fileExtension) {
case 'mp3':
$contentType = 'audio/mpeg';
break;
case 'txt':
$contentType = 'text/plain';
break;
case 'jpg':
$contentType = 'image/jpeg';
break;
case 'jpeg':
$contentType = 'image/jpeg';
break;
case 'gif':
$contentType = 'image/gif';
break;
case 'png':
$contentType = 'image/png';
break;
default:
$contentType = 'application/octet-stream';
}
$download_rate = 1024*1024*5; //限速5M下载,单位 B
header('Content-Type: ' . $contentType);
header('Content-Disposition: attachment;filename="'.$basename.'";filename*=utf-8'."''".$basename);
header('X-Accel-Redirect: /txtdown/'. $file);
header('X-Accel-Buffering: yes');
header('X-Accel-Limit-Rate: '.$download_rate);
exit();
宝塔网站-设置-配置文件
location /txtdown/
{
internal;
alias /www/wwwroot/网站目录/upload/txt/;
}
internal 只能nginx内部访问,所以直接访问 /txtdown/xxx.txt是访问不到文件的。
alias 是别名,相当于用/txtdown/ 替换 /upload/txt/ 。
重启nginx。
如果是lecms程序,需要修改 设置-伪静态,把伪静态规则改成如下:
location / {
location ~ \.(zip|rar|7z|gz|ini|htm)$ {deny all;}
location ~ /(view|lecms|admin)/.*\.(htm|ini)?$ {deny all;}
location ~ ^/(static|log|runcache|upload)/.*.(php|php3|php4|php5|cgi|asp|aspx|jsp|shtml|shtm|pl|cfm|sql|mdb|dll|exe|com|inc|sh)$ {deny all;}
if ($request_uri ~ "//") {
return 404;
}
if (!-e $request_filename) {
rewrite ^/(.+) /index.php?rewrite=$1 last;
}
}
为什么要加这个?默认的配置是server块下面,全局的,这个 lecms的 rewrite 全局的,比/txtdown/优先级高。
未测试这样子改,会不会对lecms伪静态有没影响!!!
特别声明:本站所有资源均为学习测试使用,请在下载后48小时之内自主删除,本站以学习为目的不承担任何法律责任!
评论(0)