PHP扩展库

时间:2014-07-18 09:24:26

标签: php oop

我使用库来处理我的上传,这是通过composer安装的。

该库名为FileUpload

正如您从文档中看到的那样,库的三个部分是抽象的,因此您可以根据需要创建自己的自定义类。

  

"路径解析器,验证器和文件系统的原因   是抽象的,所以你可以自己编写,满足自己的需求   (还有,用于单元测试)。图书馆附带了一堆   "简单"适合基本需求的实现。你可以写一个   例如,与Amazon S3一起使用的文件系统实现。"

这很好,但我需要覆盖this类上的函数。

<?php

namespace FileUpload;

class File {
  /**
   * Preset no errors
   * @var mixed
   */
  public $error = 0;

  /**
   * Preset unknown mime type
   * @var string
   */
  public $type  = 'application/octet-stream';

  /**
   * Is the file completely downloaded
   * @var boolean
   */
  public $completed  = false;

  /**
   * Determine file type from path (actual mime type, not extension checking)
   * @param string $path
   */
  public function setTypeFromPath($path) {
    $this->type = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $path);
  }

  /**
   * Does this file have an image mime type?
   * @return boolean
   */
  public function isImage() {
    return in_array($this->type, array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png'));
  }
}

我需要覆盖的函数是:setTypeFromPath()。 此函数使用php函数来获取文件的实际mime类型。

finfo_file,这适用于图像和标准文档但是当我尝试上传压缩文档时,例如docx,potx它没有通过我的验证,因为mime类型作为应用程序返回/拉链。

我的验证:

$validator = new FileUpload\Validator\Simple(1024 * 1024 * 10, array(
                'application/msword',
                'application/word',
                'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
                'application/pdf',
                'application/x-pdf',
                ' application/acrobat',
                'applications/vnd.pdf'
            ), $_REQUEST);

0 个答案:

没有答案