比如资源存放在 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小时之内自主删除,本站以学习为目的不承担任何法律责任!