まず、英語は私の母国語ではないので、間違いをお許しください。
Symfony2 を使用して最初のプロジェクトを開発しようとしています。ただし、ファイルのアップロードで行き詰まりました。そのため、管理する必要があるものを正確に提供する VichUploaderBundle をインストールしました: アップロードされたすべての種類のメディア (主に画像)。
なぜ画像をアップロードする必要があるのですか? プロジェクトにユーザーがいて、プロファイルを編集できます。そのため、VichUploaderBundle のおかげで、アップロードを管理する必要があるエンティティ ProfilePicture があります。送信ボタンまたはajaxを使用してフォームを送信すると、完全に機能します。
ただし、ユーザー エクスペリエンスを向上させるために、jQuery プラグイン (Cropit) も追加しました。Cropit は、トリミングされた画像の base64 を返します。全体をajaxで送っています。
そして知っている...私は苦労しています。私はアイデアの始まりを持っている人を見つけるためにインターネット上のあらゆる場所を検索してきました。すべてのドキュメントを読み、自分がやろうとしていることを行う別の方法を見つけようとしました.
これが私の実際の「テスト」コードです。
$base64 = $request->request->get('base64');
preg_match('/data:([^;]*);base64,(.*)/', $base64, $matches);
$data = base64_decode($matches[2]);
$ui = uniqid().'.png';
$file = 'images/profile_pictures/'. $ui;
file_put_contents($file, $data);
$picture = new File($file);
$profile->getPicture()->setImageFile($picture);
これにより、トリミングした画像を必要なディレクトリに保存できます。しかし、それは私が本当に望んでいることではありません。実際、base64 コンテンツを、画像を送信した場合に $profile->getPicture()->setImageFile() に存在するものに変換する方法を見つけようとしています。曖昧ですみません。アップロード システムを作成するのは初めてです。
base64 の送信を回避する方法があるのではないかと考えました。しかし、この種のデータで何ができるのでしょうか? jQuery を使用してデコードし、フォームを変換して、画像を選択してその全体を保存したい場合と同じようにフォームを送信することはできますか?
プロジェクトでそれをどのように管理しますか? これより良いバンドルは他にありますか?私は探していましたが、成功しませんでした。SonataMediaBundle は私のニーズには大きすぎるようで、トリミングした画像を保存する方法も見つかりませんでした。
VichUploaderBundle の Git で管理したい人を見つけました。ただし、より良い回答が得られる前に、彼の問題は解決されました... https://github.com/dustin10/VichUploaderBundle/issues/223
助けてくれてありがとう!