За последние 24 часа нас посетил 17071 программист и 1629 роботов. Сейчас ищут 1184 программиста ...

Проблемы с загрузкой docx и doc файлов на сервер

Тема в разделе "Прочие вопросы по PHP", создана пользователем sUydsa, 29 апр 2019.

  1. sUydsa

    sUydsa Новичок

    С нами с:
    29 апр 2019
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток, у меня есть php обработчик кнопки для загрузки файлов на сервер. Однако в целях безопасности мне необходимо разрешить загрузку файлов исключительно "doc" и "docx" форматов. Для этого я создал проверку, однако при загрузке нужных файлов мне выдаёт ошибку о том, что эти файлы якобы запрещены для загрузки. Подскажите, в чём может быть проблема, ниже оставляю код обработчика.
    PHP:
    1. <?
    2.  
    3. if(isset($_FILES)) {
    4.  
    5. $allowedTypes = array('application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document');
    6.  
    7. $uploadDir = "directory/";
    8.  
    9. for($i = 0; $i < count($_FILES['file']['name']); $i++) {
    10.  
    11. $uploadFile[$i] = $uploadDir . basename($_FILES['file']['name'][$i]);
    12.  
    13. $fileChecked[$i] = false;
    14.  
    15. echo $_FILES['file']['name'][$i]." | ".$_FILES['file']['type'][$i]." — ";
    16.  
    17. for($j = 0; $j < count($allowedTypes); $j++) {
    18.  
    19. if($_FILES['file']['type'][$i] == $allowedTypes[$j]) {
    20.  
    21. $fileChecked[$i] = true;
    22.  
    23. break;
    24.  
    25. }
    26.  
    27. }
    28.  
    29. if($fileChecked[$i]) {
    30.  
    31. if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $uploadFile[$i])) {
    32.  
    33. echo "Success <br>";
    34.  
    35. } else {
    36.  
    37. echo "Error".$_FILES['file']['error'][$i]."<br>";
    38.  
    39. }
    40.  
    41. } else {
    42.  
    43. echo "Error TYPE FILE!<br>";
    44.  
    45. }
    46.  
    47. }
    48.  
    49. } else {
    50.  
    51. echo "Вы не прислали файл!" ;
    52.  
    53. }
    54.  
    55. ?>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    751
    Адрес:
    Татарстан
    1. основное, из-за чего ругается - это определение doc/docs -это совсем не два варианта... поверьте... их куча и ни один из них ничего не гарантирует к сожалению (((( .... например если у вас не будет установлена ни одна программа не читающая данные форматы - типа не будет опознан корректно
    2. for с проверкой лучше заменить на in_array
    PHP:
    1. for($j = 0; $j < count($allowedTypes); $j++) {
    2. if($_FILES['file']['type'][$i] == $allowedTypes[$j]) {
    3. $fileChecked[$i] = true;
    4. break;
    5. }
    станет в 1 строку
    PHP:
    1. if(in_array($_FILES['file']['type'][$i],$allowedTypes) ....
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    751
    Адрес:
    Татарстан
  4. sUydsa

    sUydsa Новичок

    С нами с:
    29 апр 2019
    Сообщения:
    2
    Симпатии:
    0
    О каких программах конкретно идёт речь?