使用PHP从文件夹中获取图像:代码正在工作并获取图像路径,但img没有放入HTML中


Getting image from folder using PHP: Code working and getting image path but img not being placed into HTML

我到处找,但似乎找不到像我这样的问题。也许我没有把正确的关键词组合在一起;但也许我会更幸运地解释我的问题。

我整理了以下小代码:

    $image_types = array('gif','png','jpg');
    $recent = array();
    foreach($image_types as $image_type) {
        foreach(glob('first/second/*.'.$image_type) as $filename){
            $recent[$filename] = time() - filemtime($filename);
        }
    }
    $recent = array_keys($recent, min($recent));
    $recent_img = $recent[0];

它应该做的是查看一个特定的文件夹,找到最新的图像,然后将其放入网页。它所做的就是找到最新的图像、路径等等。所以一切都在进行中。如果我echo $recent_img,我会得到最新图像的src,所以很明显,我想把下面的代码放在后面:<img src="<?php echo $recent_img ?>" />,我应该得到图像。当然,一切都很好,甚至可以在HTML中找到一个<img>,它引用了我需要的图像。但是,在这一点上出了问题!

如果glob()单独设置为路径first,则代码完全有效:图像显示在网站中。但添加了second文件夹后,除了在网站上显示图像外,它什么都能做。

所以我去结果网站查看源代码和图像代码如下:

    <img src="first/second/img.jpg" style="display: none !important; visibility: hidden !important; opacity: 0 !important; background-position: 0px 0px;" width="0" height="0">

注意display:none!importantvisibility:hidden!important等等,就像CSS被设置为尽其所能避免显示图像一样。包括当图像明显不是0 x 0像素时,将宽度和高度设置为0。(以防万一:在我的样式表中也没有任何实例会导致在我的项目中的任何图像上将所有内容设置为0和隐藏等。(

然而,正如我所说,当路径只有一个部分,即文件夹first时,这种情况就不会发生。我试着把一个文件夹中的所有图像放进另一个文件夹,但问题仍然存在。我已经在Chrome中当场编辑了CSS值,但仍然一无所获。

这似乎是一个荒谬的问题,因为除了代码在父文件夹中的文件夹中查找文件外,什么都没有改变。此外,因为代码实际上只显示了我需要的文件及其路径,而不是文件本身。

你们可以看到在线试用示例和TEMP解决方案,或者更确切地说,"变通方法">

我讨厌围绕一个问题工作。它通常会使事情变得复杂和/或混乱。首先,在这种情况下,这是一个组织问题。最好将所有图像都放在一个文件夹中,然后为不同的类型创建子文件夹。让许多图像文件夹漂浮在根目录上对我来说不是一个好主意。其次,当错误中似乎没有逻辑时,必须使用"变通方法"似乎很荒谬。第三,我真的很想知道发生了什么,而不是把它变成PHP百慕大三角。因此,请不要把我的TEMP解决方案视为我的放弃,请继续这个美妙的地方的协同作用,毫无疑问,我们会在某个时候达成解决方案。

无论如何,您可能已经猜到的"解决方法"是将second文件夹与作为根目录的first文件夹放在同一目录中。因此,这应该能解决这个具体问题。但如果你问我的话,这不是一个温和的解决方案。

我被要求上传该问题的在线试用版,我已经上传了>>此处<lt;。您将能够在first/second/first/中看到查找最新图像的相同代码,并且您将看到其中一个在另一个神秘失败的地方工作得非常出色!

问题:我突然想到。这可能与路径名的长度有关吗?即first/可以,但first/second/太长了?考虑到从路径中检索信息是成功的,而且问题更倾向于HTML结果,这没有多大意义,但我后来尝试将second文件夹放在根目录中,并给它一个10个字母的名称,然后重新创建了问题。然而,这种情况只发生在WAMP localhost中,因为当我在网上上传所有内容时,长度似乎并不重要。然而,即使在网上,正如你从我的链接中看到的,第一个问题仍然存在

您可以尝试检索src并使用jquery进行更新:

$.get('image.php').success(function(src) {
    $('#myimg').attr('src',src);
});