显示文件名中带有空格的图像 (php)

Display images with spaces in the file name (php)

我正在查看 img 文件夹中的图像,所有图像都显示正常,除了名称中有空格的图像,例如"Screen shot.png"。用户可以上传照片,他们的文件的文件名中可能有空格。在将图像保存到我的 img 文件夹之前,我是否应该删除所有空格?或者有没有办法在图像文件路径中仍然显示带间距的图像?

function displayImage($row) {
                    $file_path = "img/" . $row['File_name'];
                    $image_title = $row['Title'];
                    echo "<br>" . $file_path;
                    echo "<li><img src=$file_path alt=$image_title>";
                    echo "<span class='info'><span>$image_title</span></span></li>";
                }

这个有用吗?就像我评论的那样......看起来你只是没有引用路径/ src 值。

function displayImage($row) {
                    $file_path = "img/" . $row['File_name'];
                    $image_title = $row['Title'];
                    echo "<br>" . $file_path;
                    echo "<li><img src=\"{$file_path}\" alt=\"{$image_title}\">";
                    echo "<span class='info'><span>$image_title</span></span></li>";
                }

您应该始终使用一些唯一的文件名重命名该文件。例如,您可以将时间戳附加到文件名。通过这种方式,您可以生成没有空格的新文件名。您可以保存原始文件名以供显示。但不要将文件以文件的原始名称保存到服务器。这是因为有可能用户可以上传2张同名的图片来替换旧文件。

使用rawurlencode()...

function displayImage($row) {
    $file_path = "img/" . rawurlencode($row['File_name']);
    $image_title = $row['Title'];
    echo "<br>" . $file_path;
    echo "<li><img src=$file_path alt=$image_title>";
    echo "<span class='info'><span>$image_title</span></span></li>";
}

只需将空格替换为其 url_encoded 值即可:%20.

在您的情况下,将函数的第一行替换为:

 $file_path = "img/" . str_replace(" ", '%20', $row['File_name']); 

您要使用rawurlencode*您的文件名(不是文件路径只是其中的名称元素;如:

 $file_path = "img/" . urlencode($row['File_name']);

*> 使用 rawurlencode 因为它会将空格编码为 %20 而不是 +,而 urlencode 会这样做。它也 more closely 符合 RFC。

但是使用这些非 url 安全值并不是一个好主意,最好在上传时重命名文件,例如:

$newFilename = preg_replace("/\h*/","_",$uploadedFile['name']);

\h catches any horizontal whitespace character
* catches it zero or more times (greedy)
These are then replaced with an underscore _