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



我正在浏览img文件夹中的图像,除了名称中有空格的图像(例如"屏幕截图.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>";
                }

Use 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>";
}

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

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

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

* > 使用原始urlencode,因为它会将空格编码为%20,而不是+ urlencode 将执行的操作。它也更符合 RFC。

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

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

h捕获任何水平空格字符
*抓住它零次或多次(贪婪(
然后用下划线_替换这些

这行得通吗? 就像我评论的那样...看起来您只是没有引用路径/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>";
                }

只需将空格替换为它们的url_encoded值:%20

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

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

最新更新