symfony - VichUploaderBundle 和 Symfony:从 JPG 获取 exif
问题描述
我正在使用 Symfony 5 和出色的 VichUploaderBundle 来上传图片。我正在尝试从 jpeg 文件中获取 exif 信息。我使用函数 exif_read_data 并且没关系(我的测试正在运行)。
现在我想知道将 exif 信息保存在我的实体中的最佳方式是什么时候?
我有一个带有传统 ImageFile、文件名、...的实体“图片”
我对此很陌生,我不知道该怎么做。
我向我的实体添加了一个 exif 字段和 setExif,以尝试将其保存为实体持续存在但它不起作用的时间。在创建实体后调用一个监听器然后让另一个持久化来保存 exif 信息会更好吗?或者可以通过添加 Exif 选项来修改 UploadableField(我们已经有了大小、原始文件名……),但我认为这显然不是最好的。
现在我有这个(当我上传我的图片时)但它不工作:
我的图片实体如下所示:
/**
* @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,
])
该 A 实体具有:
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');
非常感谢您的帮助!
解决方案
推荐阅读
- sql - 不等于运算符在 SQL Select 语句中不起作用
- azure - 是否可以在没有 LB ip 的 Windows 2016 集群中始终在配置中创建 SQL?
- c++ - 打破虚拟继承避免显式基 ctor
- ios - Swift - 结构类型不符合协议
- python - 多元回归:梯度下降定义错误
- php - 使用 yii urlManager 规则对特定 url 做出反应
- python - 如何从预训练的转换器中获取词嵌入
- apache - 如何使用 .htaccess 将 /wp-admin/admin.php?page=something 重写为 /wp-admin/something
- mariasql - 将 bigint unsigned 列转换为 bigint signed 失败
- authentication - 无法登录 wso2 管理控制台 5.4 版