file
画像をアップロードするフィールドがあるフォームがあります。この画像を Amazon S3 にアップロードする必要があります。これを段階的に構築して、ローカルディスクに画像をアップロードし始めましたが、現在は機能しています。
エンティティPage
を保存する前に、アップロードの成功をテストすることをお勧めします。私はこのコードの塊で終わった
/**
* @ORM\Column(name="objectThumbnail", type="string", length=255, nullable=true)
*/
protected $objectThumbnail;
/**
* This is not a column in the database but it's mapping a field from the form
*
* @Assert\File(maxSize="600000000")
*/
public $file;
...
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preUpload()
{
if (null !== $this->file) {
// generate a unique filename
$this->objectThumbnail = $this->getGuid().'.'.$this->file->guessExtension();
}
}
/**
* @ORM\PostPersist()
* @ORM\PostUpdate()
*/
public function upload()
{
if (null === $this->file) {
return;
}
// if there is an error when moving the file, an exception will
// be automatically thrown by move(). This will properly prevent
// the entity from being persisted to the database on error
$this->file->move($this->getUploadRootDir(), $this->objectThumbnail);
unset($this->file);
}
/**
* @ORM\PostRemove()
*/
public function removeUpload()
{
if ($file = $this->getAbsolutePath()) {
unlink($file);
}
}
それは完璧です、それは魅力のように機能しています。file
属性の公開範囲のために Symfony (2.1.7) が叫んでいるだけで、大したことはありません。
次に、S3 レイヤーを統合する必要があります。Gaufrette
そのために、 andを使用すると思いますStreamWrapper
。
今、私はそれを行うための最良の方法を見つけるのに苦労しています. Filesystem
エンティティでサービスにアクセスするにはどうすればよいですか? このようにするのは本当にきれいですか?エンティティで S3 上の画像のアップロードを処理するのは、私には少しぎこちなく感じます。
どのようにそれを行うことをお勧めしますか?
乾杯、
マキシム