Шаблоны проектирования PHP

Шаблоны проектирования PHP
PHP — загрузка файлов

Сценарий PHP можно использовать с формой HTML, чтобы пользователи могли загружать файлы на сервер. Первоначально файлы загружаются во временный каталог, а затем перемещаются в целевое место назначения с помощью сценария PHP.

Информация на странице phpinfo.php описывает временный каталог, который используется для загрузки файлов, как upload_tmp_dir, а максимально разрешенный размер файлов, которые могут быть загружены, указан как upload_max_filesize . Эти параметры устанавливаются в конфигурационный файл PHP php.ini.

Процесс загрузки файла выполняется следующим образом:

  • Пользователь открывает страницу, содержащую HTML-форму с текстовыми файлами, кнопкой просмотра и кнопкой отправки.

  • Пользователь нажимает кнопку обзора и выбирает файл для загрузки с локального ПК.

  • Полный путь к выбранному файлу отображается в текстовом поле, после чего пользователь нажимает кнопку отправки.

  • Выбранный файл отправляется во временный каталог на сервере.

  • Сценарий PHP, указанный в качестве обработчика формы в атрибуте действия формы, проверяет, что файл прибыл, а затем копирует файл в предполагаемый каталог.

  • Скрипт PHP подтверждает успех пользователю.

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

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

Создание формы загрузки

Приведенный ниже код HTM создает форму для загрузки. Эта форма имеет атрибут метода, установленный на post, а атрибут enctype установлен на multipart / form-data

Живая демонстрация
<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size =$_FILES['image']['size'];
      $file_tmp =$_FILES['image']['tmp_name'];
      $file_type=$_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
      
      $extensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152){
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true){
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action="" method="POST" enctype="multipart/form-data">
         <input type="file" name="image" />
         <input type="submit"/>
      </form>
      
   </body>
</html>

Это даст следующий результат —

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

Создание сценария загрузки

Есть одна глобальная переменная PHP, которая называется $ _FILES . Эта переменная представляет собой связанный двумерный массив и хранит всю информацию, относящуюся к загруженному файлу. Итак, если значение, присвоенное атрибуту имени входа в форме загрузки, было файлом , тогда PHP создаст следующие пять переменных:

  • $ _FILES [‘file’] [‘tmp_name’] — загруженный файл во временный каталог на веб-сервере.

  • $ _FILES [‘файл’] [‘имя’] — фактическое имя загруженного файла.

  • $ _FILES [‘файл’] [‘размер’] — размер загружаемого файла в байтах.

  • $ _FILES [‘файл’] [‘тип’] — MIME-тип загружаемого файла.

  • $ _FILES [‘файл’] [‘ошибка’] — код ошибки, связанной с загрузкой этого файла.

пример

Пример ниже должен разрешить загрузку изображений и вернуть результат в виде информации о загруженном файле.

Живая демонстрация
<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size = $_FILES['image']['size'];
      $file_tmp = $_FILES['image']['tmp_name'];
      $file_type = $_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
      
      $extensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152) {
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true) {
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action = "" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "image" />
         <input type = "submit"/>
			
         <ul>
            <li>Sent file: <?php echo $_FILES['image']['name'];  ?>
            <li>File size: <?php echo $_FILES['image']['size'];  ?>
            <li>File type: <?php echo $_FILES['image']['type'] ?>
         </ul>
			
      </form>
      
   </body>
</html>

Это даст следующий результат —

Скрипт загрузки

Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки