我正在使用 PHP 中的 cURL 从远程服务器保存和调整大量图像的大小,但是以前的开发人员没有实现任何类型的系统来使用户上传的图片“安全”,因此用户能够上传任何类型的具有任何名称的文件格式,然后上传的文件名按原样保存到数据库中,因此许多文件具有非 URL 安全和 iso-8859-8 字符。例如:
gaght101125659_5 Gn-eŐs mtó gÁrlós.jpg
根据这个答案,我制作了一个获取图片的代码。
private function getRemoteUrl($file)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$img = imagecreatefromstring($this->getRemoteUrl($url));//$url contains the plain url of the image.
此代码非常适用于名称为的图像,gaht123115516_2.jpg
但对于上面显示的示例,它会给出错误消息:
Warning: imagecreatefromstring() [function.imagecreatefromstring]: Data is not in a recognized format in /home/test/public_html/resizing.php on line 64
当然,因为花哨的角色。那么我应该如何getRemoteUrl($file)
处理$file
变量以使其工作?这可以在 PHP 中完成吗?如果不是,我应该尝试哪些其他方法/编程语言?