2012-06-12 50 views
1

我正在研究Symfony 2中的博客/畫廊,並且遵循Symfony 2書籍的Doctrine File Uploads部分幾乎是verbatum。文件上傳通常很好,但如果文件超過一定的大小(我認爲無論UploadedFile :: getMaxFilesize()是什麼),那麼當創建一個新的UploadedFile()時會引發FileNotFound異常,因爲當請求包含對該文件不包含文件本身。在Symfony 2中處理文件maxFilesize

我假設這需要在表單驗證過程中處理,但我很難在網上找到關於如何去做的大量信息。任何指向最佳行動方向的指針都將不勝感激。

回答

1

我想你可以在How to handle File Uploads with Doctrine頁找到食譜中的所有需要​​的信息。

注意註釋:

/** 
* @Assert\File(maxSize="6000000") 
*/ 
+0

經過多一點閱讀後,似乎問題並不那麼簡單。如果該文件超過了php.ini中的upload_max_filesize值(UploadedFile :: getMaxFilesize()返回),那麼請求中不包含文件內容,並且文件大小作爲零傳遞給Symfony ...所以maxSize批註驗證將會如果上傳的文件大於upload_max_filesize,則始終通過。現在我已經向控制器添加了一些代碼,以便在文件大小爲零時拋出FileException,但我認爲更好的解決方案是創建一個自定義驗證器來檢查文件大小是否大於零。 – Pappa

+1

UploadedFile類有一些方便的方法來處理這個問題。 UploadedFile :: isValid()會告訴你上傳是否成功,如果出現錯誤,UploadedFile :: getError()將返回PHP文件上傳錯誤號。錯誤代碼在這裏解釋:http://php.net/manual/en/features.file-upload.errors.php – Pappa

3

採取照顧到你的php.ini設置的upload_max_filesize參數去比的值高,在

/** 
* @Assert\File(maxSize="6000000") 
*/ 

註解。

1

Symfony的設定最大範圍也是在這個文件中:

src/AppBundle/Resources/config/validation.yml 

或在舊版本:

src/Acme/BlogBundle/Resources/config/validation.yml 

一定要改變這一點。