Модификация PHP Bulletproof для обработки загрузок без изображений

я использую пуленепробиваемый обрабатывать загрузки изображений в PHP, и это здорово. Сейчас я работаю с многочастной формой, которая будет отправлять изображения, а также файлы других типов (в частности, .pdf, .doc и .docx). Я видел этот вопрос где автор пуленепробиваемый Класс отметил, что потребуется 5 минут, чтобы изменить класс для обработки других типов файлов. Я пытался изменить типы MIME, определенные в классе, а также вручную определить их в своем коде при вызове класса, но мне кажется, что-то не хватает. Кому-нибудь повезло с этим раньше?
Я публикую это как новый вопрос, потому что я не могу пока комментировать другие вопросы и не нашел ответа на этот вопрос на SO

0

Решение

Я знаю, что это старый, как-то не видел, несмотря на подписку на пуленепробиваемый тег.

Итак, чтобы изменить класс и разрешить ему загружать нужный вам тип файла, вам нужно изменить пару строк.

Во-первых, есть скомпилированный список допустимых MimeTypes, которые хранятся в [$imageMimes](https://github.com/samayo/bulletproof/blob/master/src/bulletproof.php#L72-L77) переменная. В этом файле вы должны добавить MimeType файла, который вы хотите загрузить: например, для PDF это будет application/pdf

Затем вы должны удалить строки, которые проверяют ширину / высоту изображения в пикселях, или MimeType, который ожидает, что это будет изображение из этот, этот, этот а также этот линия.

Это избавит от функции, которая проверяет размер изображения или пантомиму от вызова. Итак, вы не можете использовать $image->height, $image->width или же $image->mime в любом месте.

Напомним, что вы должны сделать это:

class BF extends \Bulletproof {

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

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

И когда вам нужно загрузить, вы должны передать MIME-типы, которые вы хотите установить через setMime() функционировать как:

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

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

Я работаю над версией, которая не заставляет вас вручную редактировать файл для внесения аналогичных изменений. Но пока, следуйте моему примеру и поймите, что единственные ограничения для загрузки любого файла с Bulletproof лежат на функциях, которые проверяют / получают высоту изображения, ширину или MimeType.

Если вы удалите проверки MimeType изнутри upload(){}Затем метод знает, что вы должны добавить код, чтобы проверить, совпадает ли установленный вами тип с загруженным.

1

Другие решения

Других решений пока нет …