Symfony 2: Как вручную назначить файл объекту, настроенному на использование VichUploaderBundle для обработки загрузки файлов

Я настроил VichUploaderBundle, чтобы упростить загрузку изображения профиля для моей сущности пользователя. Я использую опцию GaufretteStorage, настроенную на использование локальной файловой системы, и все работает нормально, когда пользователи загружают изображение через форму.

Теперь я хочу иметь возможность самостоятельно назначать файл изображения профиля объекту пользователя в коде, а не полагаться на пользователей для загрузки через форму. Как мне это сделать?

Надеюсь, я достаточно ясно выразился... по сути, у меня есть содержимое файла изображения (которое я могу получить с помощью file_get_contents() или аналогичной меры), и я хотел бы назначить этот файл атрибуту изображения профиля пользователя.


person Nada_Surf    schedule 28.02.2014    source источник


Ответы (2)


После обращения к сопровождающему пакета он предоставил это решение, которое ответило на мой вопрос:

Взгляните на этот https://github.com/dustin10/VichUploaderBundle/pull/200/files

Имейте в виду, что пакет запускается событиями жизненного цикла объекта (onPersist onLoad и т. д.), но он будет управлять копией только в том случае, если экземпляр UploadedFile внедряется в объект.

если вы хотите вручную создать файл, но по-прежнему управлять им с помощью пакета, вам придется внедрить и UploadedFile в сущность.

person Nada_Surf    schedule 03.03.2014
comment
Не могли бы вы объяснить решение. Не могли бы вы ответить на этот вопрос? "> stackoverflow.com/questions/33103335/ - person user3425344; 14.10.2015

Я не знаю, понял ли я вас, но я думаю, что это может быть полезно:

  1. Создайте новый атрибут в объекте пользователя «изображение» или «фото».
  2. Поместите изображение в «web/uploads/user_1234.jpg» и сохраните этот путь в созданном ранее атрибуте «image».

Если вам нужно что-то еще, уточните свой вопрос.

person Javier Núñez    schedule 28.02.2014
comment
Спасибо за ответ, хотя я, наверное, не очень ясно выразился. VichUploaderBundle позволяет вам использовать Gaufrette для хранения, поэтому вы можете хранить параметры хранения с именами файлов и т. Д. Так что, когда вы загружаете свой файл, он называется и загружается в соответствующее место. Я хочу знать, как этого добиться без обработки загрузки файла через форму. Вы хотите сказать, что если я буду следовать вашим инструкциям, файл будет перемещен в соответствующее хранилище? Например, Амазон С3? - person Nada_Surf; 02.03.2014