0

画像とドキュメントを許可し、他のファイルを許可しないファイル アップロード機能があります。拡張子のみをチェックするのは悪い考えのように思えます。

私が持っているコードスニペットは次のとおりです。

var $actsAs = array(
    'MeioUpload' => array(
        'file' => array(
            'dir' => 'uploads{DS}{ModelName}',
            'fields' => array(
                'filesize' => 'size',
                'mimetype' => array('image/jpeg', 'image/pjpeg', 'image/gif',
                'image/png', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                'application/vnd.openxmlformats-officedocument.presentationml.presentation','application/pdf'),
                'message' => 'Please upload a valid document file'
            ),
            'allowed_mime' => array('image/jpeg', 'image/pjpeg', 'image/gif',
                'image/png', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                'application/vnd.openxmlformats-officedocument.presentationml.presentation','application/pdf'),
            'allowed_ext' => array(' .docx',' .jpg',' .jpeg',' .png',' .gif',' .doc',' .xls',' .xlsx',' .pdf'),
            'validations' => array(
                'MaxSize' => array(
                    'check' => false,
                ),
            ),
            'message' => 'Invalid File. Please upload only document or images'
        ),
    ),
);

許可する MIME タイプを割り当てる方法: .txt、.doc、.docx、.xls、.xlsx、.pdf、.png、.jpg、.gif、.jpeg のみ

MEIOUPLOADの微調整は素晴らしいでしょう!

4

2 に答える 2

1

いくつかの場所で試してみましたが、最終的にはコアPHP関数に頼りました。MeioUploadは、複数のmimeタイプのチェックをサポートしていません。うまくいけば、今後のバージョンで機能拡張が行われる可能性があります。

                $allowMime = array('image/jpeg', 'image/pjpeg', 'image/gif',
                                'image/png', 'application/msword','application/vnd.ms-office','application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                                'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
                                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                                'application/vnd.openxmlformats-officedocument.presentationml.presentation','application/pdf');
                $file_info = new finfo(FILEINFO_MIME);
                $filename = $attachments[$file_name];
                $data = explode(";",$file_info->file($filename));
                $mime = $data[0];
                if(in_array($mime, $allowMime))
                {
 //Your code here
于 2012-08-28T06:57:25.603 に答える
0

Mime TypeModelValidationを使用できます。コードは次のとおりです。

This rule checks for valid mimeType

<?php
   public $validate = array('image' => array(
                      'rule' => array('mimeType', array('image/gif')),
                      'message' => 'Invalid mime type.'
                                    ),
                            );
于 2012-08-17T10:01:59.193 に答える