Во-первых, поскольку английский язык не мой родной язык, пожалуйста, извините мои ошибки.VichUploaderBundle & Cropit - передать base64 в экземпляр файла
Я пытаюсь разработать свой первый проект через Symfony2. Однако я застрял в загрузке файлов. Поэтому я установил VichUploaderBundle, которые обеспечивают именно то, что мне нужно для управления: все виды загруженных медиа (в основном, изображения).
Зачем нужно загружать изображение? У меня есть пользователь в моем проекте, и они могут редактировать свой профиль. Итак, у меня есть профиль ProfilePicture, который должен управлять загрузкой, благодаря VichUploaderBundle. Он отлично работает, когда форма отправляется с помощью кнопки отправки или с помощью 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 кажется большим для моей потребности, и я не нашел способа сохранить свою обрезанную картинку вместе с ней.
Я нашел человека, который хотел управлять им на Git VichUploaderBundle. Однако его вопрос был закрыт до того, как был получен лучший ответ ... https://github.com/dustin10/VichUploaderBundle/issues/223
Заранее вам за помощь!