Я использую Symfony 5 с отличным VichUploaderBundle для загрузки изображений. Я пытаюсь получить информацию exif из файлов JPEG. Я использую функцию exif_read_data, и она в порядке (мой тест работает).
Теперь мне интересно, когда это лучший способ сохранить информацию EXIF в моей сущности, пожалуйста?
У меня есть "Picture" с традиционным ImageFile, именем файла, ...
Я совершенно новичок в этом, и я не знаю, что делать.
Я добавил поле exif и setExif моей сущности, чтобы попытаться сохранить ее как время, поскольку сущность сохраняется, но она не работает. Лучше ли вызывать слушателя после того, как объект создан, а затем сделать еще одно сохранение для сохранения информации exif? Или, возможно, измените UploadableField, добавив опцию Exif (у нас уже есть размер, оригинальное имя файла, ...), но я думаю, что это явно не самое лучшее.
Пока у меня есть это (когда я загружаю свой изображение), но оно не работает:
Моя сущность Picture выглядит следующим образом:
/**
* @ORM\Column(type="array", nullable=true)
*/
private $exif_file = [];
public function setImageFile(?File $imageFile = null): void
{
$this->imageFile = $imageFile;
if (null !== $imageFile) {
$this->updated_at = new \DateTimeImmutable("now",new \DateTimeZone('Europe/Paris'));
}
}
public function setExifFile(?array $exif_file): self
{
$this->exif_file = $exif_file;
return $this;
}
Моя форма находится в другой сущности (A), и моя загрузка определена так:
->add('pictureFiles', FileType::class,[
'required'=>false,
'multiple'=>true,
])
Эта сущность имеет:
public function setPictureFiles($pictureFiles): self
{
foreach ($pictureFiles as $pictureFile) {
$picture = new Picture();
$picture->setImageFile($pictureFile);
$path = 'http://mywebsite'.$this->helper->asset($picture->getImageFile(), 'imageFile');
$exif_file = exif_read_data($path,null,true)['FILE'];
$picture->setExifFile($exif_file);
$this->addPicture($picture);
}
$this->pictureFiles = $pictureFiles;
return $this;
}
Проблема в том, что мне не удается получить путь к файлу.
Я пробовал разные способы, но безуспешно.
Когда сущность создается, она работает следующим образом: $this->helper->asset($picture, 'imageFile');
Большое спасибо за вашу помощь!