1

我正在使用 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 中完成吗?如果不是,我应该尝试哪些其他方法/编程语言?

4

2 回答 2

1

URL 编码指定的文件名。

于 2012-12-25T22:52:21.477 回答
1

在文件名上使用urlencode()。不要urlencode()整个网址。

于 2012-12-25T22:53:19.063 回答