2014-03-19 42 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中,如果要处理图像(即时运行,自动运行,如果存在),则需要该图像库。