修改PHP Bulletproof以处理非图像上传

时间:2018-02-24 08:18:05

标签: php bulletproof

我使用Bulletproof来处理PHP中的图像上传,这非常棒。我现在正在使用多部分表单,它将发送图像以及其他文件类型(特别是.pdf,.doc和.docx)。我看到this question类的作者Bulletproof提到修改类需要5分钟来处理其他文件类型。我已经尝试更改类中定义的mime类型以及在调用类时在我的代码中手动定义它们但我似乎缺少某些东西。以前有人有运气吗? 我将这个问题作为一个新问题发布,因为我还无法对其他问题发表评论,而且在SO上找不到答案

1 个答案:

答案 0 :(得分:1)

我知道这已经过时了,尽管订阅了 bulletproof 标签但不知何故看不到它。

因此,要修改类并使其能够上传所需的文件类型,则必须修改几行。

首先,有一个可接受的MimeTypes的编译列表存储在[$imageMimes](https://github.com/samayo/bulletproof/blob/master/src/bulletproof.php#L72-L77)变量中。在此文件中,您必须添加要上传的文件的MimeType:例如:对于PDF,它将是application/pdf

然后你必须删除检查图像宽度/高度的行(以像素为单位)或MimeType,它希望它是来自thisthisthis和{{3}的图像行。

这将摆脱检查图像尺寸或mime被调用的功能。因此,您无法在任何地方使用$image->height$image->width$image->mime

总结一下,这应该是你应该这样做的:

class BF extends \Bulletproof {

   protected $imageMimes = [..... , 'application/pdf']; 

   public function upload () {
     // make the suggested edits here
   }
}

当你必须上传时,你应该通过setMime()函数传递你想要设置的mime类型:

$bf = new \BF($_FILES);
$bf->setMime(['application/pdf']);
if($bf['pictures']){

  echo $bf->upload() ? '1' : '0'; 
}

我正在开发一个版本,它不会强制您手动编辑文件以进行类似的更改。但是现在,请按照我的示例了解使用Bulletproof上传任何文件的唯一限制在于检查/获取图像高度,宽度或MimeType的函数。

如果从upload(){}方法中删除MimeType验证,则必须知道必须添加代码以检查您设置的类型是否与上传的类型相同。