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

时间:2017-03-23 21:56:33

标签: php html image file filepath

我浏览了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>";
                }

5 个答案:

答案 0 :(得分:3)

使用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>";
}

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您希望使用rawurlencode *您的文件名(文件路径只是其名称元素;例如:

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

<强> * &GT;使用 原始 urlencode ,因为它会将空格编码为%20而非+ urlencode 会的。它more closely也符合RFC。

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

只需用url_encoded值替换空格:%20

在您的情况下,请通过以下方式替换函数的第一行:

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