Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

画像をURLから取得しECCUBE3に登録する

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

外部URLから画像を取得して製品画像として登録したい。file_get_content()で画像を取得することにした。

Admin/ProductController.phpadd_image()edit()を参考に進める。

Admin/ProductController.php 217行目付近では、画像データがPOSTされてきて、UploadedFileEntityの一つとして取得される。

$images = $request->files->get('admin_product');

しかしfile_get_contents()で持って来た画像はUploadFileEntityではないので、getMimeType()getClientOriginalExtension()メソッドが使えない。

【PHP】画像ファイルの種類(拡張子やMIMEタイプ)を取得する方法 – ysklog

とりあえず、こういうやり方で代用することにした。

Symfony2のEntityに登録したい

file_put_contents()で画像データを保存して、new File()に渡す。

file_put_contents($app['config']['image_temp_realdir'].'/'.$filename, $image); //一時ファイル書き込み
$file = new File($app['config']['image_temp_realdir'].'/'.$filename);//File Entityとして登録

あと些細な問題はいくつかあったが、最終的にはこれで無事登録された。