2014-03-19 71 views
0

你好傢伙我是cakephp的新手。 我想在上傳文件之前驗證文件,我看到一些人詢問同樣的事情。但我不想要自定義功能。 這是我不想 validation on a input file in cakephp驗證文件大小/文件類型cakephp

的例子,下面是I D喜歡的代碼,但它不工作

型號:

class Career extends AppModel 
{ 
    public $validate = array(
      'file' => array(
       'checktype' => array(
        'rule' => array('extension',array('pdf','doc','docx')), 
        'message' => 'Please supply a valid file type (PDF OR WORD)', 

       ), 
       'checksize' =>array(
         'rule' => array('fileSize', '<=', '1MB'), 
         'message' => 'File must be less than 1MB', 

       ), 
      ), 
    ); 
} 

我也想補充一點,該文件不是強制性的/必須的,但是如果要上傳它,它必須是.pdf/.doc/.docx且小於1MB

謝謝大家

回答

0

你可能無法做到這一點沒有,除非你使用別人建立了一個插件實現自定義功能。如果你想自己實現並在上傳之前驗證文件,你將需要使用內置的php驗證,你可以在這裏閱讀:File upload post method

不過,我建議使用萬里約翰遜的令人難以置信的上傳插件,你可以在這裏找到: Uploader

隨着他的圖書館,你可以應用驗證,像這樣:

public $actsAs = array(
    'Uploader.FileValidation' => array(
     'image' => array(
      'maxWidth' => 100, 
      'minHeight' => 100, 
      'extension' => array('gif', 'jpg', 'png', 'jpeg'), 
      'type' => 'image', 
      'mimeType' => array('image/gif'), 
      'filesize' => 5242880, 
      'required' => true 
     ) 
) 
); 
0

我會建議你使用我的FileStorage plugin 。這是一個完整的解決方案來處理您的應用程序中的文件,可以通過事件監聽器完全自定義或擴展其模型。

但是,您也可以只爲use it's FileUploadValidation behavior

對於Image validation參見this method。它利用這裏使用的圖像庫來處理圖像,並且包裹在Imagine plugin中,如果要處理圖像(即時運行,自動運行,如果存在),則需要該圖像庫。