用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年(冯骥才)》。小镇村夫对此亦有贡献。

代码如下:

  1. <?php
  2. function get_index ($directory, $i=0) //输出文件列表的html代码
  3. {
  4.     global $file_list;
  5.     $handle = opendir( $directory ); //打开目录
  6.     while ( $file = readdir($handle) ) //遍历循环文件和目录
  7.     {
  8.         $bdir = $directory . / .$file;
  9.         if ($file <> . && $file <> .. && is_dir($bdir)) //如果不是.和 ..并且$bdir是个目录
  10.         {
  11.             get_index($directory ./. $file, $i); //递归
  12.         }
  13.         else if ( $file <> . && $file <> ..) 
  14.         {
  15.             $file_list.= <li><a href=" . substr(substr($directory, $i) ./. $file, 1) . "> . substr(substr($directory, $i) ./. $file, 1) . </a></li>;
  16.         }
  17.     }
  18.     closedir( $handle ); //关闭目录
  19.     return $file_list;
  20. }
  21.  
  22. function make_file($content, $filename=index.htm) //生成列表文件
  23. {
  24.     $fp = fopen($filename,w);
  25.     fwrite($fp, $content);
  26.     fclose($fp);
  27.     header(location: . $filename);
  28. }
  29.  
  30. if($_GET['action']==make)
  31. {
  32.     $dir=$_POST['dir']?$_POST['dir']:dirname(__FILE__); //指定路径
  33.     make_file(get_index($dir,strlen($dir))); //生成文件
  34. }
  35.  
  36. echo 
  37.     <form method="post" action="?action=make">
  38.     输入路径:<input type="text" name="dir" />
  39.     <input type="submit" value="确定" />
  40.     </form>
  41. ;

也可以到这里直接下载文件,嗯,PHP文件当然必须是可以直接下载的。

相关文章

Tags: , ,

2 Responses to “用PHP生成Getdropbox公开下载目录文件列表”

  1. sheep Says:

    你好:
    我按照楼主的方法在dropbox的public文件夹下上传了make_index.php,可是我用他的url访问的时候会提示下载,根本不会运行,也没有自动生成目录啊?
    是不是我的方法不对?楼主可否再描述下怎样打开make_index.php。
    另外,这个程序我在我的一个博客空间上运行过,可以生成列表(是支持php的空间)。生成的列表名称是 “文件夹\文件夹\文件夹\文件名.exe” 的格式。我想下,可不可以去掉前面的“文件夹\文件夹\文件夹\”,直接显示“文件名.exe”呢?我觉得这样的列表就更方便查询了。
    谢谢。
    sheep

  2. citywill Says:

    @sheep 直接把make_index.php放到dropbox目录下是不行的,因为dropbox不是php的服务器,不能解析php程序,而你的博客空间就可以解析php程序,所以能够运行。不过要提醒你,别把这个脚本用在你的博客程序目录,否则生成的index.htm文件有可能覆盖你的程序首页。你的意见不是很可行,因为不同的目录下文件名是可以重复的,直接显示文件名就可能造成混淆。

Leave a Reply