Задать вопрос
den_ul
@den_ul
Пока еще начинающий php-программист

PHP Не работает загрузка файлов на сервер?

Всем привет, я совсем недавно начал углубляться в разработку и столкнулся с одной проблемой! Помогите, пожалуйста, кто разбирается, целый день вожусь с этим. В php массиве список полей формы с указанием, какие из них уже загружены. Загруженные поля должны отображаться с пометкой "Уже загружен" и ним не должно быть возможности загружать файл. В общем после того, как добавил проверку загруженных файлов, файлы перестали загружаться в нужный каталог.

Код PHP:
<?php
session_start(); 
$heading = 'Название компании';
$field = 'Текстовое поле(файл)';

// $blacklist = [['Устав', true], ['Расчетный счет', false], ['Паспорт ответственного', true], ['ИНН ответственного', false]];
$blacklist = array(
  'file_1' => array('name' => 'Устав', 'uploaded' => true),
  'file_2' => array('name' => 'Расчетный счет', 'uploaded' => false),
  'file_3' => array('name' => 'Паспорт ответственного', 'uploaded' => true),
  'file_4' => array('name' => 'ИНН ответственного', 'uploaded' => false)
);

// echo key($blacklist);

?>

<!DOCTYPE html>
<html>
<head>
  <title>Контактные данные</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
  <?php
  ini_set('display_errors', 1);
  ini_set('display_startup_errors', 1);
  error_reporting(E_ALL);

  if (isset($_SESSION['message']) && $_SESSION['message'])
  {
    printf('<b>%s</b>', $_SESSION['message']);
    unset($_SESSION['message']);
  }
  ?>
  <form method="POST" action="upload.php" id="upload-container" enctype="multipart/form-data">
    <div id="myModal" class="form-zvonok"> 
      <div id="myModal1" class="form-zvonok1">
        <h2> <?php echo $heading; ?> </h2>
        <hr class="hr-up">
        <?php foreach ($blacklist as $key => $file)  {?>
          <?php if ($file['uploaded']): { ?>
            <?php echo '<p>Имя поля: '.$file['name'].'</p>'
            ?>
            <p><?php echo 'Файл загружен!' ?>
            <hr>
          <?php } else: { ?>
          <div>
            <?php echo "Имя поля: ".$file['name']; ?>
            <?php echo '<input type="file" name= ".$key." /><br> Файл не загружен' ?>
          </div>
          <hr>
        <?php } ?>
          <?php endif ?>
          <?php
        } ?>
        <br>
        <input type="checkbox" id="myBtn" required><label>Нажимая кнопку «Отправить», я даю свое согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных», на условиях и для целей, определенных в Согласии на обработку персональных данных <span>*</span></label>
        <br>
        <br>

        <input type="submit" id="myBtn" name="uploadBtn" value="Отправить" onclick="SendFile()"/>
        <hr class="hr-down">
      </div>
    </div>
  </form>
</body>
</html>


Обработчик формы:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Результат загрузки</title>
	<link rel="stylesheet" type="text/css" href="upload_style.css">
</head>
<?php
session_start();

$message = ''; 
if (isset($_POST['uploadBtn']) && $_POST['uploadBtn'] == 'Upload')
{
  if (isset($_FILES['file_1']) && $_FILES['file_1']['error'] === UPLOAD_ERR_OK)
  {
    // get details of the uploaded file
    $fileTmpPath = $_FILES['file_1']['tmp_name'];
    $fileName = $_FILES['file_1']['name'];
    $fileSize = $_FILES['file_1']['size'];
    $fileType = $_FILES['file_1']['type'];
    $fileNameCmps = explode(".", $fileName);
    $fileExtension = strtolower(end($fileNameCmps));

    // sanitize file-name
    $newFileName = md5(time() . $fileName) . '.' . $fileExtension;

    // check if file has one of the following extensions
    $allowedfileExtensions = array('jpg', 'gif', 'png', 'zip', 'txt', 'xls', 'doc');

    if (in_array($fileExtension, $allowedfileExtensions))
    {
      // directory in which the uploaded file will be moved
      $uploadFileDir = './uploaded_files/';
      $dest_path = $uploadFileDir . $newFileName;

      if(move_uploaded_file($fileTmpPath, $dest_path)) 
      {
        $message ='Файл успешно загружен.';
      }
      else 
      {
      	$message = 'При перемещении файла в каталог загрузки произошла ошибка. Убедитесь, что каталог загрузки доступен для записи веб-сервером.';
      }
    }
    else
    {
      $message = 'Загрузка не удалась. Допустимые типы файлов: ' . implode(',', $allowedfileExtensions);
    }
  }
  else
  {
  	$message = 'При загрузке файла произошла ошибка. Пожалуйста, проверьте следующую ошибку.<br>';
  	$message .= 'Error:' . $_FILES['file_1']['error'];
  }
}
$_SESSION['message'] = $message;
header("Location: index.php");
?>
</html>
  • Вопрос задан
  • 462 просмотра
Подписаться 1 Простой 18 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы