я использую пуленепробиваемый обрабатывать загрузки изображений в PHP, и это здорово. Сейчас я работаю с многочастной формой, которая будет отправлять изображения, а также файлы других типов (в частности, .pdf, .doc и .docx). Я видел этот вопрос где автор пуленепробиваемый Класс отметил, что потребуется 5 минут, чтобы изменить класс для обработки других типов файлов. Я пытался изменить типы MIME, определенные в классе, а также вручную определить их в своем коде при вызове класса, но мне кажется, что-то не хватает. Кому-нибудь повезло с этим раньше?
Я публикую это как новый вопрос, потому что я не могу пока комментировать другие вопросы и не нашел ответа на этот вопрос на SO
Я знаю, что это старый, как-то не видел, несмотря на подписку на пуленепробиваемый тег.
Итак, чтобы изменить класс и разрешить ему загружать нужный вам тип файла, вам нужно изменить пару строк.
Во-первых, есть скомпилированный список допустимых 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(){}
Затем метод знает, что вы должны добавить код, чтобы проверить, совпадает ли установленный вами тип с загруженным.
Других решений пока нет …