[英]Symfony 2 handling file uploads
對於有關處理文件上傳的問題,我找不到直接的答案。 一般而言:上載文件(包括良好實踐)的最佳“ symfony”方法是什么?
在我的研究/懷疑之下:
根據docs: 處理文件上載 ,看起來我可以立即在我的實體中擁有uploadFile對象並進行管理。 問題是我不覺得實體與該上傳有任何關系,並且似乎並沒有處理它的好地方。 即我想將圖像文件保存在不同的文件夾中(根據上傳日期),我不喜歡檢查/創建實體內部的文件夾和路徑的想法。 好的方面是,我可以訪問生命周期回調以上傳/刪除文件。
經過更多研究之后,我發現了這個主題: Symfony 2-從Amazon S3 Idea 上載圖像的最佳實踐是創建一個用於文件上傳的自定義處理程序。 我喜歡這一點,特別是因為在我的示例中,我想使用額外的服務來調整上傳圖像的大小,並且可以輕松地將它們注入處理程序。 我的問題是:該主題已有2年歷史了,所以也許在目前的symfony中,這種解決方案不再“可行”了嗎?
最后一個問題:就symfony的良好實踐而言,哪種方法更好? 我想念什么嗎? 我希望這個問題不要太籠統。
TLDR :在symfony2的實際版本中處理上載文件的最佳方法是什么?將實體作為上載的文件掛起,或將該邏輯移至某些自定義處理程序/服務?
實際上,我發現在實體上管理可上傳字段的最好方法是使用VichUploaderBundle 。 如果您打算使用s3或類似的服務, 可以很容易地配置Gaufrette並使其發揮出色 。
這是有關使用捆綁軟件的簡單示例:
配置文件:
vich_uploader:
db_driver: orm
mappings:
product_image:
uri_prefix: images/products
upload_destination: %kernel.root_dir%/../web/images/products
namer: vich_uploader.namer_origname
delete_on_remove: true
您的實體:
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @Vich\Uploadable
*/
class Product
{
/**
* @Assert\File(
* maxSize="5M",
* mimeTypes={"image/png", "image/jpeg", "image/pjpeg"}
* )
* @Vich\UploadableField(mapping="product_image", fileNameProperty="image")
*/
protected $file;
/**
* @ORM\Column(type="string", length=255, name="image", nullable=true)
*/
protected $image;
}
我開始將OneupUploaderBundle與jQuery File Uploader一起使用。 我需要同時上傳多張圖片,並且由於您提到了圖片,因此這可能適合您。 在OneupUploaderBundle EventListener中,您可以在文件上傳后立即添加自定義邏輯,包括將圖像移動到所需的任何文件夾,調整大小以及添加其他過濾器。 我設置了一種自動調整大小並創建縮略圖的方法,而我的實體僅存儲文件信息和位置。 檢查這些,看看是否與您需要的更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.