用PHP生成Getdropbox公开下载目录文件列表
getdropbox总能给人带来惊喜。本以为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文件当然必须是可以直接下载的。
Tags: DropBox, getdropbox, php




![[怀旧之三] 郭杨音乐杂志(一)](http://pic.yupoo.com/cclog/5230856a36f1/65eq8f8d/square.jpg)
6月 23rd, 2009 at 3:08 下午
你好:
我按照楼主的方法在dropbox的public文件夹下上传了make_index.php,可是我用他的url访问的时候会提示下载,根本不会运行,也没有自动生成目录啊?
是不是我的方法不对?楼主可否再描述下怎样打开make_index.php。
另外,这个程序我在我的一个博客空间上运行过,可以生成列表(是支持php的空间)。生成的列表名称是 “文件夹\文件夹\文件夹\文件名.exe” 的格式。我想下,可不可以去掉前面的“文件夹\文件夹\文件夹\”,直接显示“文件名.exe”呢?我觉得这样的列表就更方便查询了。
谢谢。
sheep
6月 23rd, 2009 at 8:41 下午
@sheep 直接把make_index.php放到dropbox目录下是不行的,因为dropbox不是php的服务器,不能解析php程序,而你的博客空间就可以解析php程序,所以能够运行。不过要提醒你,别把这个脚本用在你的博客程序目录,否则生成的index.htm文件有可能覆盖你的程序首页。你的意见不是很可行,因为不同的目录下文件名是可以重复的,直接显示文件名就可能造成混淆。