russiaclear
@russiaclear
Студент

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

Здравствуйте!
Не могу разобраться как реализовать следующее:
Необходимо на сервер загружать файл в определенную папку. Файл с расширением xlsx.
В php не очень разбираюсь, нашел такой код, загрузил его на сервер:

index.html
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Загрузка файлов на сервер</title>
</head>
<body>
<noindex>
      <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="uploadedFile"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>
</noindex>
</body>
</html>


upload.php
<?php
if(isset($_POST['upload'])){
   
   $whitelist = array(".xlsx"); 

   $error = true;
	
   //Проверяем разрешение файла
   foreach  ($whitelist as  $item) {
        if(preg_match("/$item\$/i",$_FILES['userfile']['name'])) $error = false;
   }

  if($error) die("Ошибка,&nbsp; Вы можете загружать только xlsx "); 

  $folder =  '/folder/';

  $uploadedFile =  $folder.basename($_FILES['uploadFile']['name']);

  if(is_uploaded_file($_FILES['uploadFile']['tmp_name'])){

     if(move_uploaded_file($_FILES['uploadFile']['tmp_name'],

        $uploadedFile)){

        echo "Файл загружен";
     }
     else {

        echo "Во время загрузки файла произошла ошибка";
     }
  }
  else {

       echo "Файл не  загружен";
  }
}

?>


После выбора и нажатия на "загрузить" переходит на страницу site.ru/upload.php, на нем ничего не отображается.
На сайте php версии 5.3 (можно поставить 5.4 и 7)
Помогите пожалуйста)
  • Вопрос задан
  • 2230 просмотров
Пригласить эксперта
Ответы на вопрос 2
@tommy_13
включить отображение ошибок для начала
Ответ написан
Комментировать
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);
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:20
15000 руб./за проект
25 апр. 2024, в 12:08
300 руб./за проект
25 апр. 2024, в 11:49
25000 руб./за проект