【问题标题】:PHP to post links to sub directories & php to display imagesPHP 发布到子目录的链接 & php 来显示图像
【发布时间】:2013-08-30 23:52:17
【问题描述】:

我在 PHP 方面非常基础。

在我的网站上,我有一个名为“uploads”的目录

在“上传”中,我有 3 个文件夹“Example1”“Example2”和“Example3”

在每个文件夹中,它们都包含图像。

我需要知道如何使用 php 为每个子目录创建导航。 因此,如果我添加一个新文件夹“Example4”,它将提供如下导航:

选择您要查找的部分:

  Example1 | Example2 | Example3

如果我稍后添加新文件夹,请将它们添加到导航中。 例如:

  Example1 | Example2 | Example3 | Example4 | Example5

然后,一旦他们单击链接进入文件夹,就有一个显示该文件夹中所有图像的代码。

到目前为止我有:

<?php
$files = glob("uploads/*.*");
for ($i=0; $i<count($files); $i++)
{
$num = $files[$i];
echo '<a href="/'.$num.'"><img src="/'.$num.'"></a>'."<p>";
}
?>

但它只会显示上传目录中的图片,而不是Example1中的图片等等。

我到底该怎么做呢?我正在为一个学校项目做这件事,有两个星期的时间来完成它,但我很迷茫。我只知道 CSS、HTML,我知道的唯一 PHP 是 php 包含,所以任何帮助将不胜感激。

【问题讨论】:

  • 图片是存储在文件夹中还是使用blob存储在数据库中?你的数据库是什么样的?给我一些细节,我们会帮助你!在你的到期日之前。 :)
  • 图片在DB中是如何存储的?

标签: php file directory hyperlink subdirectory


【解决方案1】:

首先,请阅读更多 PHP 手册,目录相关:opendir,文件相关:fopen

以下代码基本上是对opendir中提供的示例代码进行了重新整理。它的作用:

scan_directory 函数简单地检查目录路径是否有效并且是一个目录,然后如果有子目录则继续执行递归调用,否则只需打印出文件名。

第一个 if/else 条件只是为了确保基目录有效。

我将添加 ulli 使其更加美观。

$base_dir = 'upload';

if (is_dir($base_dir)) 
    scan_directory($base_dir);
else 
    echo 'Invalid base directory. Please check your setting.';

// recursive function to check all dir
function scan_directory($path) {
    if (is_dir($path)) {
        if ($dir_handle = opendir($path)) {
            echo '<ul>';
            while (($file = readdir($dir_handle)) !== false) {
                if ($file != '.' && $file != '..') {
                    if (is_dir($path . '/' . $file)) {
                        echo '<li>';
                        echo $file;
                        scan_directory($path . '/' . $file);
                        echo '</li>';
                    }
                    else
                        echo "<li>{$file}</li>";
                }
            }
            echo '</ul>';
        }
    }
}

【讨论】:

    【解决方案2】:

    要获取每个特定文件夹的文件,传递它抛出一个包含文件夹名称的get变量,然后扫描这个文件夹并显示图像,url应该是这样的:

     listImages.php?folderName=example1
    

    拥有您想要的菜单:

    <?php
        $path = 'uploads/' ;
        $results = scandir($path);
        for ($i=0;$i<count($results);$i++   ) {
            $result=$results[$i];
            if ($result === '.' or $result === '..') continue;
    
            if (is_dir($path . '/' . $result)) {
                 echo "<a href='imgs.php?folderName=$result'>$result</a>  ";
    
            }
            if($i!=count($results)-1) echo '|'; //to avoid showing | in the last element
        }
    ?>
    

    这里是扫描特定文件夹图像的 PHP 页面列表图像:

    <?php
        if (isset($_GET['folderName'])) $folder=$_GET['folderName'];
        $path = 'uploads/'.$folder.'/' ;
        $images = glob($path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
        foreach ($images as $image) {
             echo "<img src='$image' />";
        }
    ?>
    

    【讨论】:

    • 这绝对完美!非常感谢。在回显图像的部分,如果我想包含指向同一图像的链接,我会放 吗?
    • 是的,就像你说的那样
    【解决方案3】:

    以图像名称创建图像作为子目录名称并将其保存在数据库中

    示例:

    子目录名:example2

    图片名称:image.jpg

    在数据库中存储图像名称为“example2/image.jpg”

    【讨论】:

      【解决方案4】:

      由于您似乎对 glob 有点熟悉,这里是一个使用“glob”函数的示例。您可以在此处查看所需内容的基本工作示例: http://newwebinnovations.com/glob-images/

      这是我设置示例的方式:

      有两个PHP文件,一个是index.php,一个是list-images.php。

      还有一个图片文件夹,里面有图片的两个子文件夹。

      index.php 是在 images 文件夹中查找文件夹并将它们放置在带有链接 list-images.php 的列表中的文件,该链接将显示文件夹内的图像:

      $path = 'images';
      $folders = glob($path.'/*');
      echo '<ul>';
      foreach ($folders as $folder) {
          echo '<li><a href="list-images.php?folder='.$folder.'">'.$folder.'</a></li>';
      }
      echo '</ul>';
      

      上面创建的链接创建了一个动态变量,该变量会将链接传递到 list-images.php 页面。

      这是 list-images.php 代码:

      if (isset($_GET['folder'])) {
          $folder = $_GET['folder'];
      }
      $singleImages = array();
      foreach (glob($folder . '/*.{jpg,jpeg,png,gif}', GLOB_BRACE) as $image) {
          $imageElements = array();
          $imageElements['source'] = $image;
          $singleImages[$image] = $imageElements;
      }
      echo '<ul>';
      foreach ($singleImages as $image) {
          echo '<li><a href="'.$image['source'].'"><img src="'.$image['source'].'" width="400" height="auto"></a></li>';
      }
      echo '</ul>';
      

      此处创建的链接会将您链接到各个图像。

      【讨论】:

        猜你喜欢
        • 2013-10-03
        • 1970-01-01
        • 2016-01-28
        • 1970-01-01
        • 2017-01-24
        • 2013-08-06
        • 1970-01-01
        • 2018-03-08
        • 2023-04-02
        相关资源
        最近更新 更多