php记录(自留)

1、php中的递归查找文件夹,php递归获取目录内的文件,包含子目录(转载自 https://blog.youkuaiyun.com/weixin_39734184/article/details/115537343?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-1-115537343-blog-54885837.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-1-115537343-blog-54885837.pc_relevant_default&utm_relevant_index=2)

download.php
<?php
require_once 'functions.php';
 
//排空错误
if(empty($_GET['id'])){
    die('id is empty');
}
//连接数据库
connnetDb();
 
$id=intval($_GET['id']);

function readFileFromDir($dir) {
if (!is_dir($dir)) {
return false;

}

//打开目录

$handle = opendir($dir);

while (($file = readdir($handle)) !== false) {
//排除掉当前目录和上一个目录

if ($file == "." || $file == "..") {
continue;

}

$file = $dir . DIRECTORY_SEPARATOR . $file;

//如果是文件就打印出来,否则递归调用

if (is_file($file)) {
print $file . '
';

} elseif (is_dir($file)) {
readFileFromDir($file);

}

}

}
$dir = '/phpstudy_pro/WWW/today/results';

readFileFromDir($dir);



?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>显示文件</title>

</head>
<body>

<button>

    <a href = "http://today:8090/results/.txt">

    下载文件</button>

效果:获取文件目录并且显示在页面上

2、php三种方式下载文件
(转载自:https://www.php.cn/php-weizijiaocheng-390215.html)

1、直接添加文件链接

<button>

    <a href = "http://localhost/down.zip">

    下载文件</button>

2、传递参数查找并跳转到下载链接

<button>

    <a href = "http://localhost?f='down'">

    下载文件

</button>

<?php$down = $_GET['f'];   //获取文件参数
$filename = $down.'.zip'; //获取文件名称
$dir ="down/";  //相对于网站根目录的下载目录路径$down_host = $_SERVER['HTTP_HOST'].'/'; //当前域名//判断如果文件存在,则跳转到下载路径if(file_exists(__DIR__.'/'.$dir.$filename)){

    header('location:http://'.$down_host.$dir.$filename);

}else{

    header('HTTP/1.1 404 Not Found');

}

3、head() 和 fread()函数把文件直接输出到浏览器

<?php  

$file_name = "down";$file_name = "down.zip";     //下载文件名    $file_dir = "./down/";        //下载文件存放目录    //检查文件是否存在    if (! file_exists ( $file_dir . $file_name )) {    

    header('HTTP/1.1 404 NOT FOUND');  

} else {    

    //以只读和二进制模式打开文件   

    $file = fopen ( $file_dir . $file_name, "rb" ); 
    //告诉浏览器这是一个文件流格式的文件    

    Header ( "Content-type: application/octet-stream" ); 

    //请求范围的度量单位  

    Header ( "Accept-Ranges: bytes" );  

    //Content-Length是指定包含于请求或响应中数据的字节长度    

    Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) );  

    //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。

    Header ( "Content-Disposition: attachment; filename=" . $file_name );    
    //读取文件内容并直接输出到浏览器    

    echo fread ( $file, filesize ( $file_dir . $file_name ) );    

    fclose ( $file );    

    exit ();    

}


效果:<button>

    <a href = "http://today:8090?f='results'">

    下载文件</button>
回跳转到html后台页面。file:///G:/phpstudy_pro/WWW/today/index.html

更换文件夹名字为group,结果一样。



4、PHP文件下载函数(代码)
https://www.php.cn/php-weizijiaocheng-233298.html#:~:text=php%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD%E7%9A%84%E5%87%BD%E6%95%B0%EF%BC%8C%E5%85%B7%E4%BD%93%E5%87%BD%E6%95%B0%E4%BB%A3%E7%A0%81%E5%A6%82%E4%B8%8B%EF%BC%9A%20function%20download%20%28%24file_url%2C%24new_name%3D%27%27%29%20%7B%20if,%28%21isset%20%28%24file_url%29%7C%7Ctrim%20%28%24file_url%29%3D%3D%27%27%29%20%7B%20return%20%27500%27%3B





```php
function download($file_url,$new_name=''){

 if(!isset($file_url)||trim($file_url)==''){
 return '500';
 }
 if(!file_exists($file_url)){ //检查文件是否存在
 return '404';
 }
 $file_name=basename($file_url);
 $file_type=explode('.',$file_url);
 $file_type=$file_type[count($file_type)-1];
 $file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;
 $file_type=fopen($file_url,'r'); //打开文件
 //输入文件标签
 header("Content-type: application/octet-stream");
 header("Accept-Ranges: bytes");
 header("Accept-Length: ".filesize($file_url));
 header("Content-Disposition: attachment; filename=".$file_name);
 //输出文件内容
 echo fread($file_type,filesize($file_url));
 fclose($file_type);
}
### 编程资源与社区推荐 对于编程学习者或开发者来说,找到合适的编程资源和社区至关重要。以下是几个值得推荐的方向: #### 1. **官方文档** 官方文档通常是学习任何技术的第一手资料。无论是Android开发[^4]还是CUDA编程[^5],官方文档都能提供权威的技术细节和支持。 - 对于Android开发,Google Developers网站提供了详尽的API指南、教程以及最佳实践。 - CUDA开发者官网则涵盖了从基础入门到高级优化的各种主题,适合不同层次的学习者。 #### 2. **在线课程平台** 一些知名的在线教育平台也提供了高质量的编程课程,帮助用户系统地掌握技能。 - Coursera 和 Udemy 提供了大量由行业专家制作的付费及免费课程。 - edX 上也有许多大学合作推出的计算机科学相关课程。 #### 3. **开源项目仓库** 参与实际项目的构建是提升编码能力的有效途径之一。GitHub作为全球最大的代码托管平台,不仅可以让您浏览其他人的作品,还可以贡献自己的力量参与到真实的软件工程当中去。 #### 4. **专业技术论坛** 遇到难题时,向更广泛的互联网求助往往能获得意想不到的帮助。 - Stack Overflow 是程序员解决问题的好地方,几乎所有的常见问题在这里都已经有了答案。 - Reddit 的 r/learnprogramming 子版块非常适合初学者提问得到反馈。 #### 5. **本地Meetup和技术大会** 参加线下聚会或者线上直播分享会也是不错的选择,可以直接与其他爱好者交流心得体验最新趋势动态。 --- ```python def find_resources_or_communities(): resources = [ {"name": "Official Documentation", "link": "#"}, {"name": "Online Courses Platforms", "examples": ["Coursera", "Udemy"]}, {"name": "Open Source Project Repositories", "example": "GitHub"} ] communities = [ {"type": "Q&A Forums", "popular ones": ["StackOverflow", "Reddit/rLearnProgramming"]}, {"type": "Local Meetups & Tech Conferences", "description": "Great for networking."} ] return f"Resources: {resources}\nCommunities:{communities}" ```
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值