• Как реализовать форму загрузки файл определенного формата php?

    russiaclear
    @russiaclear Автор вопроса
    Студент
    Нашел другой код, он без проблем загружает файлы на сервер. Но он загружает все файлы подряд, а мне нужно чтобы загружал только xlsx

    <!DOCTYPE html>
    <html prefix="og: http://ogp.me/ns#"><head>
    
    <meta http-equiv="X-UA-Compatible" content="IE=10" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
    
    <link type="text/css" rel="stylesheet" href="styles.css" media="all" />
    
    </head>
    <title>Загрузка файлов на сервер с помощью PHP функции</title>
    <body>
    
    
     <?php  
     
    // Загрузка файлов 
    function upload($filename, $pach, $flag = false) 
    {    
        // $filename - это свойство name в input  
        // $pach - директория куда будет сохранён загруженный файл 
        // директория загрузки должна иметь доступ 777 
        // $flag - по умолчанию false (0),  
        // определяет перезапись существующего файла в директории, если выставлен TRUE (1) 
         
        // Проверяет существует ли директория и возможно ли её открыть из этого скрипта 
        if(!opendir($pach)){return 'Директория сохранения файлов, указана неверно!';} 
         
        // устанавливаем директорию загрузки файла 
         $uploadfile = $pach.basename($_FILES[$filename]['name']); 
         
        // Устанавливаем вариант перезаписи файла 
        // если false, файл не перезаписывается, а выдаётся предупреждение. 
    	
        if(!$flag){ 
            // Проверяем существует ли такой файл в директории 
            if(is_file($uploadfile)) return("<div class='error'><p>ВНИМАНИЕ! Такой файл уже существует.</p></div>"); 
        } 
         
        if(!empty($filename)) 
        { 
           
          // Ограничения размера загружаемого файла 
          if($_FILES[$filename]['size'] > 1024*2*1024) 
           { 
             return("<div class='error'><p>Размер файла превышает 2 мегабайта</p></div>"); 
              
           } 
           // Проверяем загружен ли файл 
           if(is_uploaded_file($_FILES[$filename]['tmp_name'])) 
           { 
             // Если файл загружен успешно, перемещаем его 
             // из временной директории в конечную 
              
             if(copy($_FILES[$filename]['tmp_name'],$uploadfile)) 
             { 
                 return("<div class='no-error'><p>OK! Файл успешно загружен.</p></div>"); 
             } 
             else 
             { 
                return('<strong>'/*. $_FILES[$filename]['tmp_name'].$pach */.$_FILES[$filename]['name'].' </strong> - не является правильно загруженным файлом или
    не может быть перемещён из временной директории.');      
             } 
           }  
           else  
           { 
              switch($_FILES[$filename]['error']) 
              { 
                  case 1: echo "<div class='error'><p>Размер файла превышает допустимый.</p></div>"; 
                  break; 
                  case 2: echo "<div class='error'><p>Размер файла превышает допустимый.</p></div>"; 
                  break; 
                  case 3: echo "<div class='error'><p>Загружаемый файл был получен только частично.</p></div>"; 
                  break; 
                  case 4: echo "<div class='error'><p>Файл не был загружен!</p></div>"; 
                  break; 
              } 
               
           } 
        } 
        else 
        { 
            return('Не указан файл для загрузки!');     
        } 
    } 
    
    
    
    ?>
    
    
    
    </body></html>


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

    <?php
    //Список разрешенных файлов
    $whitelist = array('gif','jpeg','jpg','png');
    $extension = end(explode('.',$$_FILES['fileToUpload']['name'])); 
    $uploaddir = 'images/';
    $uploadfile = $uploaddir . $_FILES['fileToUpload']['name'];
    $result = array();
    $flag = true;
    if(in_array($extension, $whitelist)){$flag = false;}
    var_dump($flag);
    if (!$flag) {
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile)) {
    $result['error'] = '';
    $result['result'] = $uploadfile;
    } else {
    $result['error'] = 'Не удалось загрузить файл';
    $result['result'] = '';
    }
    }
    header('Content-Type: text/html; charset=utf-8');
    echo json_encode($result);
    ?>
    Ответ написан
    Комментировать