当前位置: 首页 > 知识库问答 >
问题:

在使用CakePHP 1.3上传文件期间,如何过滤多个mimetype以进行验证?

夏新翰
2023-03-14

我有一个文件上传功能,我想允许图像和文档,而不允许其他文件,只检查扩展名听起来是个坏主意。

我得到的代码片段是:

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'
        ),
    ),
);

如何分配mimetypes以允许:。txt。文件。docx。xls。xlsx。pdf。巴布亚新几内亚。jpg。gif。仅限jpeg

MEIOUPLOAD调整将是伟大的!

共有2个答案

咸亦
2023-03-14

您可以使用Mime类型模型验证。代码如下:

This rule checks for valid mimeType

<?php
   public $validate = array('image' => array(
                      'rule' => array('mimeType', array('image/gif')),
                      'message' => 'Invalid mime type.'
                                    ),
                            );
唐永春
2023-03-14

尝试了几个位置,最后求助于核心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
 类似资料:
  • 我试图理解以下文档: Transferutility.UploadDirectory null null null

  • 但是如何为多个文件做呢? PS.在webflux中有没有另一种上传一组文件的方法?

  • 我正在尝试使用DropZone上载多个文件。但在控制器中检索文件名时出现问题。请帮我找出哪里出了错。我已经在下面发布了我的代码。 DropZone的HTML代码: 脚本文件,用于: 在控制器actionCreate()方法中: 当我在拖放框中添加图片并点击提交按钮时,拖放框中的图片显示成功结果。但是当我试着打印$模型的时候-

  • 问题内容: 这是我使用拖放功能动态生成的HTML。 这是我的JavaScript代码: 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您使用 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通

  • 问题内容: 这是我使用拖放功能动态生成的html。 这是我的js代码… 问题答案: 为了正确使用表格数据,您需要执行2个步骤。 准备工作 您可以将整个表单交给FormData()进行处理 或为FormData()指定确切的数据 发送表格 带有jquery的Ajax请求将如下所示: 之后,它将发送ajax请求,就像您提交常规表格一样 更新:如果没有in选项,该请求将无法工作,因为所有文件都必须通过P

  • 问题内容: 这是我上传多个文件的代码: HTML代码: 密码: 但是它会上传单个文件,而不是多个文件。 问题答案: 在模板中,你需要在上传输入中添加属性: 然后在查看功能中,上传的文件可以通过列表获取。循环此列表并在每个项目上调用save()方法将它们保存在给定路径中: 此外,你可能需要使用secure_filename()来清洁文件名: 你也可以使用此方法生成随机文件名。 完整演示 视图: im