我浏览了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>";
}
答案 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']);