在PHP中创建文件目录并具有可单击的下载链接

时间:2010-02-19 17:13:06

标签: php html

在我的网站上我希望能够显示文件列表,确切地说是照片,然后将它们单独链接,这样当有人点击它时,他们就可以下载它。

我正在尝试这个:

[代码]     

$path = "c:/users/jon/desktop/pictures";



// Open the folder

$dir_handle = @opendir($path) or die("Unable to open $path");



// Loop through the files

while ($file = readdir($dir_handle)) {



if($file == "." || $file == ".." || $file == "index.php" )



    continue;

    echo "<a href=\"$file\">$file</a><br />";



}



// Close

closedir($dir_handle);

&GT?;    [/代码]

这会列出文件,但是当我点击它们时,我找不到对象,但确实存在!

我做错了什么?

感谢

4 个答案:

答案 0 :(得分:1)

你的href“c:/ users / jon / desktop / pictures;”中的路径是文件系统的路径。您必须从Web访问图片文件夹(可能需要亲自动手使用Apache配置)。

您可以添加到apache.conf的配置示例(取自我在Linux上的apache并修改):

  Alias /mypics/ c:/users/jon/desktop/pictures/
  <Location /mypics/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Location>

如果您可以看到http://localhost/mypics/中的文件列表,那么这意味着该文件夹可以访问。

您可以更新相对于文档根目录的路径

echo "<a href=\"".$path."/".$file."\">$file</a><br />";

echo "<a href=\""/mypics/$file."\">$file</a><br />";

如果您不想再使用文件列表,请更改

 Options Indexes FollowSymLinks MultiViews

 Options FollowSymLinks MultiViews (not sure about the other options here)

答案 1 :(得分:0)

文件位于服务器的C:驱动器上。

用户无法访问服务器的整个C:驱动器,服务器只提供从指定位置提供的文件 - 这是存储PHP文件的位置。

您需要将图像文件放在同一个位置,然后将脚本指向它们。

如果您不想/不能移动它们,那么您必须让您的网络服务器访问该文件夹,如果您使用的是apache,则应该按照ccheneson的描述执行此操作。

答案 2 :(得分:0)

试试这个, 这对我来说很好,我正在使用xampp

$path = "./pictures";

答案 3 :(得分:-2)

替换:

echo "<a href=\"$file\">$file</a><br />";

使用:

echo "<a href=\"".$path."/".$file."\">$file</a><br />";

readdir返回的字符串是文件名而不是文件路径,因此您必须在文件名之前添加文件夹路径