【发布时间】:2026-02-04 02:45:02
【问题描述】:
我正在尝试打开名称中包含拉丁字符的图像 (113_Atlético Madrid)。
我通过使用 PHP 函数 rawurlencode() 对其名称进行编码来保存它,所以现在它的新名称是 113_Atl%C3%A9tico%20Madrid。但是,当我尝试通过此 URL 打开它时,例如 mysite.com/images/113_Atl%C3%A9tico%20Madrid.png 我收到 404 错误。
我该如何解决这个问题?
PHP 代码:
if(isset($_FILES['Team'])){
$avatar = $_FILES['Team'];
$model->avatar = "{$id}_".rawurlencode($model->name).".png";
if(!is_file(getcwd()."/images/avatars/competitions/{$model->avatar}")){
move_uploaded_file($avatar['tmp_name']['avatar'], getcwd()."/images/avatars/teams/{$model->avatar}");
}
}
【问题讨论】:
-
你需要使用
rawurldecode:php.net/manual/en/function.rawurldecode.php -
@Hackerman 你能解释一下为什么我需要解码 url 吗?
-
在那段代码中......您正在创建一个编码文件名......然后您要求该文件存在,如果不存在,则在该文件夹中创建文件,对吗?... .现在您确定检查文件是否已上传?...我认为如果您不使用
rawurlencode,您的代码应该可以工作。想一想,您正在使用以下名称保存图像:113_Atl%C3%A9tico%20Madrid.png对吗?然后当您尝试从浏览器打开该图像时,即使文件存在,您的浏览器也会将其解释为:113_Atl%C3%A9tico%20Madrid.png为113_Atlético Madrid.png,即为什么它会返回 404 错误。 -
@Hackerman 当我解码它时,它的新名称变成了
113_Atlأ©tico Madrid而不是113_Atlético Madrid,有什么建议吗?
标签: php html unicode url-encoding