Показать сообщение отдельно
  #1 (permalink)  
Старый 14.08.2011, 15:57
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

validFormat Class для PHP
Вчера заказчик позвонив мне, разочаровано выговаривал мне мол файлы которые возможны для загрузки проверяются по расширению файла, и этого не достаточно, так как говорит за небольшое время работы сайта, пользователи на загружали файлов совершенно не имеющих отношения к тем что разрешены, то-есть расширение файлов все как положено но вот не задача, внутри файлов, оказывается совершенно не тот контент, что должно быть учитывая расширение файла. На его сайте разрешено загружать лишь два формата файлов это .DOC и .DOCX которые в последствии конвертируются в PNG нужное количество страниц. Сказав ему о том что я подумаю что сделать с этим, мы закончили беседу. После разговора с ним, я сидел и раздумывал как быть. Порылся немного в нете, посмотрел на файлы изнутри, зная то что .DOCX это обычный xml упакованный в ZIP архив, но тут назрел вопрос, а как же быть с файлами .DOC ? Поковыряв файл этого формата я ничего другого не придумал, как лишь только начать разбирать его на части, выковыривая из него нужные данные которые указывают на тип документа. Формат DOC и XLS друг на друга очень похожи, та же сигнатура, те же блоки, по сути они идентичны оставалось лишь одно, вытащить из них информационный блок. Вот собственно из за этого я тут и пишу, спустя несколько часов я все же разработал класс для определения корректности файлов, и соответственно выкладываю его на обозрение.

Имя Класса: validFormat
Тип Класса: Static
Версия: 1.0.1
Требуется: PHP >= 5.2.0

Использование очень простое, подключаем класс через один из возможных видов подключения типа require, include и т.д. Затем используем его примерно так:
if ( validFormat::is_doc( 'file.doc' ) ) {
    echo "Yes it's DOC";
} else {
    echo "No, this is not DOC";
}

пока поддерживает лишь четыре формата файлов, функции для них:
validFormat::is_doc();
validFormat::is_docx();
validFormat::is_xls();
validFormat::is_xlsx();

Думаю по функциям понятно что за типы файлов. В дальнейшем я планирую расширить количество форматов, добавляя новые функции. Так что следите за версиями, выкладывать буду сюда же.

Все копирайты написанные внутри файла прошу не затирать.

С уважением! Всем приятной работы.
Вложения:
Тип файла: zip validFormat.class-1.0.1.zip (1.8 Кб, 2 просмотров)

Последний раз редактировалось devote, 14.08.2011 в 22:47.
Ответить с цитированием