【问题标题】:Get all img and pdf with php用php获取所有img和pdf
【发布时间】:2018-11-24 02:39:12
【问题描述】:

我正在尝试使用 php 从文件夹中获取所有图像,并将它们与另一个我有 pdf 文件的文件夹链接。两者的名字是一样的。

我的代码如下所示:

    $dir_jpg = "../wp-content/uploads/newspaper/jpg/";
    $dir_pdf = "../wp-content/uploads/newspaper/pdf/";

        $images = glob($dir_jpg."*.*");
        $pdfs = glob($dir_pdf."*.*");

        $array = array_combine($images, $pdfs);

        foreach($array as $image => $pdf){
          echo '<ul>';
            echo '<li>';
              echo '<a href="'.$pdf.'" target="_blank"><img src="'.$image.'" height="100" width="100" /></a>';
            echo '</li>';
          echo '</ul>';
        }

我做了 var_dump 来检查数组,但它是空的。我的代码不起作用的原因可能是什么?

更新 我将文件存储在 wordpress 文件夹系统中,但我没有通过 wordpress 媒体,因此数据库中没有关于它们的记录。我想避免它,并通过ftp帐户上传这些文件并用php代码列出它们。

更新 2 在与@Gabor Klement 聊天时,我们已经解决了这个问题

  $wp_root = wp_upload_dir()['baseurl'];
      $dir_jpg = $wp_root."/newspaper/jpg/";
      $dir_pdf = $wp_root."/newspaper/pdf/";

      $images = glob($dir_jpg."*.*");
      $pdfs = array();

      $imgNum = count($images);

      $list = '<ul>';
        for ($i = 0; $i < $imgNum; $i++) {
            $filename = substr(basename($images[$i]), 0, -4);
            $pdfs[$i] = $dir_pdf.$filename.".pdf";

            if (file_exists($dir_pdf.$filename.".pdf")) {
                $list .= '<li><a href="'.$pdfs[$i].'" target="_blank"><img src="'.$images[$i].'" height="100" width="100" /></a></li>';
            }

        }

        $list .= '</ul>';

        echo $list;

但由于某种原因,wordpress 没有显示这些文件。有趣的部分是 &lt;img src="&lt;?php echo $dir_jpg ?&gt;/july2012.jpg" /&gt; 放在 $list 工作之前

更新 3 将路径传递给$images 的唯一方法是wp_upload_dir()['basedir'];,但随后wordpress 创建了一个类似domain.com/home/user/domains/domain/public_html/wp-content/uploads/newspaper/jpg/december2012.jpg 的路径并且找不到图像。

【问题讨论】:

  • 使用*.*抓取所有文件
  • 检查您提供的是 glob 的文件系统路径,而不是 Web 可访问路径,例如。 /var/www/domain.local/wp-content/uploads/newspaper/jpg/
  • 我已经更新了我的代码,但还是没有成功
  • 在这个文件夹中还有所有图片$dir_pdf ?或者您只想获取两个文件夹中的图像?
  • @Nawin 在$dir_pdf 我存储我所有的 pdf-s 并在$dir_jpg 我存储所有 jpg 以保持更整洁。在这两个文件夹中,文件的名称是相同的,所以我有 ex。 $dir_pdf 中的 july.pdf 和 $dir_jpg 中的 july.jpg

标签: php wordpress


【解决方案1】:

我找到了解决问题的方法。我必须使用wp_upload_dir()['basedir'] 将路径传递给glob,然后使用wp_upload_dir()['baseurl'] 将链接传递给src。

也许它不是最好的解决方案,但它确实有效。

  $base_dir = trailingslashit(wp_upload_dir()['basedir']);
  $base_url = wp_upload_dir()['baseurl'];
  $dir_jpg  = '/newspaper/jpg/';
  $dir_pdf  = '/newspaper/pdf/';

  $images = glob($base_dir.$dir_jpg.'*.*');

  foreach($images as $image) {
   $url = $base_url.$dir_jpg.basename($image);

   $filename = substr(basename($image), 0, -4);

   $pdfs = $base_url.$dir_pdf.$filename.".pdf";

   printf('<a href="'.$pdfs.'" target="_blank" class="newspaper-link col-xl-3"><img src="%s" alt="'.$filename.'.pdf"><div class="newspaper-hover"></div></a>', esc_url($url));
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    相关资源
    最近更新 更多