用PHP生成Getdropbox公开下载目录文件列表
星期二, 4月 21st, 2009getdropbox总能给人带来惊喜。本以为public下的文件只能通过下载方式发布(多数web服务器都能够做到限制浏览),然而今天才发现,其中的html页面和jpg等图片格式的文件,进而包括所有前端文件,竟然都能通过web直接浏览。这样getdropbox又多了一个用处:方便、免费、最大5G的静态网页空间!(关于getdropbox的介绍:同步存储服务 DropBox 免费奖励扩容最大5G)
当然getdropbox的public文件夹主要是用来共享文件的。冗长如 dl.getdropbox.com/u/**** 这样的网址也不太适合发布网站。但我们可以为在public中的文件做一个web索引,帮助使用者快速检索。纯粹的静态开发肯定是不合适的,所以我写了个php脚本,寥寥40行,两个函数用于递归遍历目录和生成索引文件,前端有个用于指定路径的表单。可以为服务端的任意目录生成索引。将生成的文件放到public文件夹下就是这样的:http://dl.getdropbox.com/u/142189/index.htm。当然这个程序稍微修改一下也适合ftp或者本地非服务端目录的检索。
目前我的public不多,慢慢积累中。本期强烈推荐一本电子图书:《100个人的10年(冯骥才)》。小镇村夫对此亦有贡献。
代码如下:
- <?php
- function get_index ($directory, $i=0) //输出文件列表的html代码
- {
- global $file_list;
- $handle = opendir( $directory ); //打开目录
- while ( $file = readdir($handle) ) //遍历循环文件和目录
- {
- $bdir = $directory . ‘/‘ .$file;
- if ($file <> ‘.‘ && $file <> ‘..‘ && is_dir($bdir)) //如果不是.和 ..并且$bdir是个目录
- {
- get_index($directory .‘/‘. $file, $i); //递归
- }
- else if ( $file <> ‘.‘ && $file <> ‘..‘)
- {
- $file_list.= ‘<li><a href="‘ . substr(substr($directory, $i) .‘/‘. $file, 1) . ‘">‘ . substr(substr($directory, $i) .‘/‘. $file, 1) . ‘</a></li>‘;
- }
- }
- closedir( $handle ); //关闭目录
- return $file_list;
- }
- function make_file($content, $filename=‘index.htm‘) //生成列表文件
- {
- $fp = fopen($filename,‘w‘);
- fwrite($fp, $content);
- fclose($fp);
- header(‘location:‘ . $filename);
- }
- if($_GET['action']==make)
- {
- $dir=$_POST['dir']?$_POST['dir']:dirname(__FILE__); //指定路径
- make_file(get_index($dir,strlen($dir))); //生成文件
- }
- echo
- ‘
- <form method="post" action="?action=make">
- 输入路径:<input type="text" name="dir" />
- <input type="submit" value="确定" />
- </form>
- ‘;
也可以到这里直接下载文件,嗯,PHP文件当然必须是可以直接下载的。




