• Такой вопрос, использую плагин для написания постов ads-wordpress
    http://mywordpress.ru/plugins/ads-wordpress/
    http://ili.com.ua/
    загружаю архивы. Используется тип фильтрации mimes.
    Например zip в WP есть по умолчанию, rar подключается так:

    function additional_types($mimes) {    $mimes['rar'] = 'application/x-rar-compressed';    return $mimes;}
    add_filter('upload_mimes', 'additional_types');

    Проверка типа файла:

    if(!preg_match('~rar|zip|force-download~',$files[1]['type']) ){
            $files['error'] .= 'Вторая загрузка только архив<br />';
            $postID = $files[1]['id'];
            $res = wp_delete_attachment($postID);
            $files[1] = 0;
       }
       return $files;

    Форма загрузки:

    if($files[1]){
    ?>
    <tr><td><a href="<?=$files[1]['url']?>"><img src="<?=$files[1]['thumb']?>"  /><br /><?=$files[1]['name']?></a></td>
    <td><input type="image" name="DELETE_FILE[1]" value="delete" alt="delete" title="delete"  src="<?=$urlImages?>delete_1.png"></td></tr>
    <?
    }else{
    ?> <tr><td>Чертеж в архиве*</td><td> <input type="file" name="1"/>
    <br /><small>архив формата ZIP</small></td></tr>
    <?
    }
    ?>
    <input type="submit" name="UPLOAD" value="Загрузить"/>

    Проблема такая, не у всех пользователей загрузка проходит фильтр, выдает ошибку: «Вторая загрузка только архив». Насколько я понял это из за несовершенства метода фильтрации mime. Вопрос, как изменить mime фильтрацию на фильтрацию по типу файла? Или как правильно настроить фильтр по mime чтобы загружало все архивы (но не екзешники)?

    Уже прочел 4 книги по PHP, скоро программировать начну млин… а вот такую простую задачу не могу решить(

    З.Ы. К хостеру обращался, говорят мои проблемы, и рекомендуют использовать фильтрацию по типу файла.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Если есть пользователь, у которого проблема стабильно воспроизводится, можно посмотреть, какое при этом получается значение $files[1]['type'].
    Вроде, у Chrome получается пустое значение: http://stackoverflow.com/questions/856013/mime-type-for-zip-file-in-google-chrome

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Можно фильтровать по расширению:

    if(!preg_match('/.*\.(rar|zip)/',$files[1]['name'])){
            $files['error'] .= 'Вторая загрузка только архив<br />';
            $postID = $files[1]['id'];
            $res = wp_delete_attachment($postID);
            $files[1] = 0;
       }
       return $files;

    Судя по статистики, нет зависимости от использованного браузера.
    $files[1][‘type’] — выдает что тип файла исполняемый, типа экзешник.

    Спасибо за совет, попробую.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Загрузка файлов» закрыта для новых ответов.