我有一個表格,其中我有一個file
字段上傳圖片。我需要在Amazon S3上傳這張圖片。一步一步建立我開始上傳本地磁盤上的圖像,它現在正在工作。Symfony 2 - 在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);
}
}
這是完美的,它的工作就像一個魅力。 Just Symfony(2.1.7)由於file
屬性的公共範圍尖叫,沒有什麼重要的。
現在我需要整合S3層。爲此,我想我將使用Gaufrette
和StreamWrapper
。
現在我正在努力尋找最好的辦法。如何訪問實體中的Filesystem
服務?這樣做真的很乾淨嗎?在實體中處理S3上的圖像上傳時,我感到有些尷尬。
你會如何推薦這麼做?
乾杯,
馬克西姆
Hi @ maxwell2022,你採取哪種方法解決這個問題?你使用Gaufrette包或Cybernox/AmazonWebServicesBundle? Tks爲你的好問題... – 2014-06-24 12:40:08
是的,我使用了Gaufrette。閱讀接受的答案的評論,有更多的細節。 – maxwell2022 2014-06-24 23:28:35