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()URL全体を使用しないでください。

于 2012-12-25T22:53:19.063 に答える