显示文件名中带有空格的图像 (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 _
我正在查看 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_