Загрузка файлов на сайт: php, ajax, html5 и drag’n’drop

Содержание:

Добавляем HTML форму для загрузки файла

HTML-формы предоставляют собой интерфейс, через который пользователь инициирует загрузку файла. Нужно помнить, что элемент должен иметь свой атрибут метода, установленный для публикации, и его атрибут , заданный для . Элемент файла предоставляет поле, используемое для указания файла, который будет загружен

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

Вот как выглядит типичная разметка формы загрузки файлов:

Стоит отметить, что разные браузеры будут визуализировать поле загрузки файла по-разному. IE, Firefox и Opera отображают его как текстовое поле с кнопкой рядом с ней надписью «Обзор» или «Выбрать». Safari отображает ее так же, как кнопку с надписью: «Выбрать файл». По большому счету это не проблема с тех пор, как пользователи привыкли к тому, как поле отображается в своем браузере и умеют его использовать. Иногда, однако, вы столкнетесь с клиентом или дизайнером, который непреклонно представляет его определенным образом. Количество CSS и JavaScript, которые могут применяться к файловому полю, крайне ограничено из-за соображений о безопасности, наложенных браузерами. Типизация файла может быть затруднена. Если внешний вид очень важен для вас, я рекомендую вам прочитать одну из статей «Питер-Пол Кох» типа ввода = «файл».

Creating an upload script

There is one global PHP variable called $_FILES. This variable is an associate double dimension array and keeps all the information related to uploaded file. So if the value assigned to the input’s name attribute in uploading form was file, then PHP would create following five variables −

  • $_FILES − the uploaded file in the temporary directory on the web server.

  • $_FILES − the actual name of the uploaded file.

  • $_FILES − the size in bytes of the uploaded file.

  • $_FILES − the MIME type of the uploaded file.

  • $_FILES − the error code associated with this file upload.

Example

Below example should allow upload images and gives back result as uploaded file information.

<?php
   if(isset($_FILES)){
      $errors= array();
      $file_name = $_FILES;
      $file_size = $_FILES;
      $file_tmp = $_FILES;
      $file_type = $_FILES;
      $file_ext=strtolower(end(explode('.',$_FILES)));
      
      $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;  ?>
            <li>File size: <?php echo $_FILES;  ?>
            <li>File type: <?php echo $_FILES ?>
         </ul>
			
      </form>
      
   </body>
</html>

It will produce the following result −

Previous Page
Print Page

Next Page  

Создание файла средствами PHP и последующей записью в файл.

Категория: Скрипты php
Просмотров: 3839
Коментариев:
Дата: 2017-01-17
Добавил: admin

Динамическое создание файла в заданной директории с последующей записью в него,
помогает решить ряд проблем. С одной из них столкнулся и я, создавая демонстрацию демо-версии на одном из сайтов. Уже сначала было решено: не создавать для каждой статьи отдельную папку для хранения файла с кодом демо-версии, а хранить его содержимое в базе данных. В этом случае, при подготовке демо-страницы, нужно производить выборку демо-кода из базы данных и затем выводить саму демку.

Все было бы ничего, но в одной статье пришлось выводить «PHP» — код из базы, в результате получил игнорирование данного кода, т.е. не обработку данного скрипта, а простой вывод написанного кода. Тогда я понял, что все мои идеи и написанный код накрылись «медным тазом», но оказалось, программирование не имеет границ. Тогда мне пришла идея при выводе демо-страницы создавать динамически файл, а если он уже существует, то просто перезаписывать его новым содержимым. Таким образом, не накапливается куча файлов на сервере, а растет только размер базы данных.

Создается файл на PHP следующим образом:

PHP

//полученный результат после запроса в базу 
$data = "Ваш запрос в базу данных для получения кода демо-версии";
// открываем файл, если файл не существует,
     //делам попытку создать его
     $create_file = fopen("temp_file.php", "w");
     // записываем в файл текст
     fwrite($create_file, $data);
     // закрываем файл
     fclose($create_file);

Код выше создаст файл temp_file.php и запишет в него полученные из базы данные, уже хранящиеся в массиве $data . Но нужно помнить и быть аккуратным, т.к. если файл с таким именем уже существует, то все содержимое в нем будет (утеряно) перезаписано на новое.

В этом случае можно проверить существование файла например так:

PHP

// 
$data = "0123456789";

if ( !file_exists( " temp_file.php " ) ) 
{ // если файл НЕ существует то создадим его и запишем в него значение  $data
     $create_file = fopen ("temp_file.php ", "w");   
     fwrite($create_file, $data);   
     fclose($create_file);  
   } 
   else 
{ 
  echo 'Создать файл не удалось. Файл был создан раньше или возникла ошибка при создании файла.'; 
}

В функции fopen() после имени файла указывается параметр (флаг) «w» необходимый для указания режима работы с файлом. Существует 6 таких параметров для использования.

  • «r» – Файл открывается только для его чтения; указатель помещается в начало файла.
  • «r+» – Файл открывается для чтения и разрешает произвести запись в него; указатель помещается в начало файла.
  • «w» – Файл открывается для записи; указатель помещается в начало файла. Если файл не существует, делается попытка создать его.
  • «w+» – Файл открывается для чтения и разрешает произвести запись в него; указатель помещается в начало файла. Если файл не существует, делается попытка создать его.
  • «a» – Файл открывается только для записи; указатель помещается в конец файла. Если файл не существует, делается попытка создать его.
  • «a+» – Файл открывается для чтения и разрешает произвести запись в него; указатель помещается в конец файла. Если файл не существует, делается попытка создать его.

В этой же функции fopen() задается и директория, в которой нужно создать наш файл. В примере файл создастся в текущей директории (в корне проекта).

Вот некоторые правила описания пути к файлу.

  • temp_file.php – Файл расположен в текущей директории.
  • ./views/temp_file.php – Файл расположен в папке views, которая находящейся в текущей директории. Длина директории не ограничивается.
  • ../temp_file.php – Файл расположен в предыдущей директории. Каждый знак ../ расценивается как возврат в родительскую директорию.
  • ../views/temp_file.php – Файл расположен в папке views, которая лежит в предыдущей директории.

Например, чтобы создать файл в каталоге, который на 3 уровня выше текущей директории (считаем корень проекта) формируем такую структуру записи:

Пример:   ./application(папка1)/views(папка2)/demo_view(папка3)/temp_file_view.php 

Вот таким, достаточно, простым способом можно создать файл и заполнить его какой-либо информацией.

<<< Предыдущий материал

Следующий материал >>>

‘)
document.write(»)
}
else
document.write(message)

function crossref(number)
{
var crossobj=document.all? eval(«document.all.neonlight»+number) : document.getElementById(«neonlight»+number)
return crossobj
}

function neon()
{
//Change all letters to base color
if (n==0)
{
for (m=0;m

  • Транслитерация средствами PHP.
  • Загрузка файла на сервер с помощью Фреймворка CodeIgniter
  • Вывод рекламы Adsense в середине статьи.
  • Скачать файл с сайта на CodeIgniter

Добавить комментарий:

Какой способ лучше выбрать

Мы рассмотрели все четыре возможных варианта, как подключить PHP-файл с целью расширения программы. Оптимальные среди них — конструкции с суффиксом _once.

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

Поэтому наш выбор — include_once и require_once в зависимости от важности файлов для работы программы. Инструкции с суффиксами помогают избежать ошибок, связанных с повторным подключением.

Лайфхак от перфекциониста

Чтобы отличать основные файлы от подключаемых, вторые можно переименовать. К примеру, мы пишем сайт на PHP. Добавим .inc к основным файлам header.php, footer.php и другим. Получим названия вида header.inc.php, footer.inc.php и тому подобные. За счет этого в папке вы сразу поймете, какие скрипты основные, а какие — второстепенные.

Добавлять .inc нужно исключительно для визуального оформления: никакой функциональной нагрузки прием не несет. Но удобство и структура важны в программировании, поэтому старайтесь все делать в едином стиле.

Если вы начинающий PHP-программист, рекомендуем пройти курс «PHP-разработчик». Вы изучите его от азов до нюансов и станете настоящим гуру в профессии.

Курс «PHP-разработчик»

Обширная программа для изучения PHP, состоящая из4 курсов. Поможет с нуля овладеть популярным языком программирования, устроиться в IT-компанию вашей мечты или стать независимым разработчиком.

  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

PHP Open File — fopen()

A better method to open files is with the function. This function gives you more
options than the function.

We will use the text file, «webdictionary.txt», during the lessons:

AJAX = Asynchronous JavaScript and XMLCSS = Cascading Style Sheets
HTML = Hyper Text Markup LanguagePHP = PHP Hypertext PreprocessorSQL = Structured Query LanguageSVG = Scalable Vector GraphicsXML = EXtensible Markup Language

The first parameter of contains the name of the file to be opened and the
second parameter specifies in which mode the file should be opened. The following example
also generates a message if the fopen() function is unable to open the specified file:

Example

<?php$myfile = fopen(«webdictionary.txt», «r») or die(«Unable to open file!»);echo fread($myfile,filesize(«webdictionary.txt»));
fclose($myfile);?>

Tip: The and the functions will be
explained below.

The file may be opened in one of the following modes:

Modes Description
r Open a file for read only. File pointer starts at the beginning of the file
w Open a file for write only. Erases the contents of the file or creates a new file if it doesn’t exist. File pointer starts at the beginning of the file
a Open a file for write only. The existing data in file is preserved. File pointer starts at the end of the file. Creates a new file if the file doesn’t exist
x Creates a new file for write only. Returns FALSE and an error if file already exists
r+ Open a file for read/write. File pointer starts at the beginning of the file
w+ Open a file for read/write. Erases the contents of the file or creates a new file if it doesn’t exist. File pointer starts at the beginning of the file
a+ Open a file for read/write. The existing data in file is preserved. File pointer starts at the end of the file. Creates a new file if the file doesn’t exist
x+ Creates a new file for read/write. Returns FALSE and an error if file already exists

File names with capital letters

File names can contain uppercase and lowercase characters. However, the operating system that uses the files may be case sensitive. For example, Microsoft Windows is not case sensitive and treats all files the same regardless if they have all lowercase characters or some uppercase characters. However, Linux and macOS are case sensitive, which means the file «readme.txt» and «README.TXT» are treated as two different files even though they have the same file name.

Tip

When designing a web page or uploading any images or other files to the Internet, they are case sensitive. We always recommend keeping all your file names in all lowercase characters when they are used online to help prevent any confusion or errors.

Creating an upload form

The following HTM code below creates an uploader form. This form is having method attribute set to post and enctype attribute is set to multipart/form-data

<?php
   if(isset($_FILES)){
      $errors= array();
      $file_name = $_FILES;
      $file_size =$_FILES;
      $file_tmp =$_FILES;
      $file_type=$_FILES;
      $file_ext=strtolower(end(explode('.',$_FILES)));
      
      $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>

It will produce the following result −

Требования перед загрузкой файлов

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

Для этого в php.ini стоит проверить директиву , и, если она выключена, то включить.

Загружаемые файлы сначала сохраняются во временном каталоге (но не волнуйтесь … ваш PHP-скрипт впоследствии может переместить файлы в более подходящее место). Исходное местоположение является временным каталогом для системы по умолчанию. Вы можете указать другой каталог, используя директиву в php.ini. Независимо от этого, будет не лишним проверить, что процесс PHP имеет правильные права на запись в зависимости от используемого каталога.

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

Крайне важно, чтобы ваш элемент использовал метод POST и имел атрибут , установленный для

Создание HTML-формы

Затем создайте HTML-форму, которая позволит пользователям выбрать файл изображения, который они хотят загрузить:

<!DOCTYPE html><html><body><form action=»upload.php» method=»post»
enctype=»multipart/form-data»>    Select image to upload:    <input type=»file» name=»fileToUpload» id=»fileToUpload»>    <input type=»submit» value=»Upload Image» name=»submit»>
</form></body></html>

Некоторые правила, чтобы следовать для HTML-формы выше:

  • Убедитесь, что в форме используется метод = «Post»
  • Форма также нуждается в следующем атрибуте: Enctype = «многокомпонентные/формы-данные». Он определяет, какой тип контента использовать при отправке формы

Без требований выше, Загрузка файла не будет работать.

Другие вещи, котор нужно заметить:

Атрибут type = «file» тега показывает поле ввода в виде элемента управления «Выбор файла» с кнопкой «Обзор» рядом с элементом управления вводом

Приведенная выше форма отправляет данные в файл под названием «upload.php», который мы создадим далее.

Сим-сим, откройся: или Как зайти на файлообменник Яндекса?

Итак, аккаунт на Яндексе у Вас есть. На файлообменник Яндекса можно попасть одним из следующих способов (наиболее распространенных):

1) Заходим в свою почту на Яндексе, кликаем на ссылку Народ:

После чего Народ нам предложит два варианта дальнейших действий:

  • Управление сайтом
  • Загрузить файлы: по одному, либо сразу много.

Нас интересует 2-ой вариант – загрузить файлы, о нем речь пойдет ниже.

  • Создайте свой сайт
  • Делитесь файлами

3) Наконец, третий способ зайти на файлообменник. В адресной строке браузера набираем narod.yandex.ru и далее все, как описано абзацом выше.

Итак, во 2-ом и в 3-ем вариантах Вы увидите следующую картинку:

Ниже ссылки «Делитесь файлами» можно ознакомиться c правилами размещения и хранения файлов на файлообменнике Yandex:

Неограниченное пространство для ваших файлов.

Файлы хранятся не менее 3 месяцев. Время хранения можно самостоятельно продлевать сколько угодно раз, или оно продлевается автоматически, если файл скачивают.

Максимальный размер файла — до 5 ГБ.

Если ваш провайдер поддерживает программу Яндекса «Локальная сеть», ваш трафик считается по локальному тарифу.

Пора загружать свой файл в Интернет, то есть на файлообменник.

  • ввести свой e-mail на Яндексе и
  • пароль к нему.

После этого Вы попадете на файлообменник, где будет предложено загрузить файлы:

Выбираем «по одному» (цифра 1 на скриншоте выше), затем щелкаем по кнопке «Обзор» (цифра 2 на скриншоте выше). Открывается окно для поиска файла на своем компьютере «Выгрузка файла».

Находим там нужный файл, кликаем по нему 1 раз мышкой, после чего имя файла будет помещено в окно «Имя файла» (цифра 1 на скриншоте ниже). Осталось кликнуть по кнопке «Открыть» (цифра 2 на скриншоте ниже):

После этого можно получить ссылку на наш файл, которая будет доступна в Интернете 24 часа в сутки:

Ссылка для скачивания выдается уже выделенной, то есть закрашенной синим цветом. Ее можно скопировать, если нажать на горячие клавиши Ctrl+C (это означает копировать).

Также можно ссылку вставить в письмо. Для этого выбираем опцию «отправить по почте», откроется окно:

Посмотрите мой видео-урок, чтобы все стало ясно и понятно:

Хочу добавить, что когда срок хранения файлов на Яндекс-народе заканчивается, приходит на почту следующее сообщение: “Здравствуйте, Надежда. Сообщаем, что срок хранения Ваших файлов на сервисе Яндекс.Народ заканчивается. Для того чтобы продлить срок хранения файлов на 45 дней, перейдите по ссылкам:

файл “5_Winamp.7z” – http://narod.yandex.ru/disk/prolongate/26065729001/5_Winamp.7z.html – срок хранения до 01 марта 2012г.

файл “7_Setup.7z” – http://narod.yandex.ru/disk/prolongate/26065921001/7_Setup.7z.html – срок хранения до 01 марта 2012г.

Также Вы можете следить за сроком хранения Ваших файлов с помощью виджета для главной страницы Яндекса. Добавить виджет на главную — Яндекс.Народ – бесплатный хостинг и хранение файлов”

Достаточно кликнуть по указанным в письме ссылкам и срок хранения будет продлен на 45 суток.

P.S. Статья закончилась, но можно еще почитать:

Распечатать статью

Получайте актуальные статьи по компьютерной грамотности прямо на ваш почтовый ящик. Уже более 3.000 подписчиков

.

Важно: необходимо подтвердить свою подписку! В своей почте откройте письмо для активации и кликните по указанной там ссылке. Если письма нет, проверьте папку Спам

Суперглобальный массив $_FILES

Если вместе с текущим запросом были загружены файлы, PHP-интерпретатор автоматически заполнит суперглобальный массив $_FILES соответствующей информацией. Его структура довольно проста. Элементы массива соответствуют именам параметров HTTP-запроса. Например, ваша веб-форма содержит поле загрузки файла с атрибутом «name=»upload-file»». В таком случае информация будет добавлена в $_FILES.

Содержимое массива $_FILES:

  • $_FILES — реальное имя файла, которое он имел до отправки.
  • $_FILES — размер загруженного файла в байтах.
  • $_FILES — MIME-тип файла.
  • $_FILES — содержит имя файла, которое назначил ему интерпретатор при размещении во временную директорию;

Заметка
Существует одно требование к HTML-разметке полей, осуществляющих множественный выбор и загрузку файлов. Их атрибут name должен быть составлен следующим образом «name=»имя-атрибута[]»». Если вы опустите конструкцию [], PHP обработает только один файл.

Требования

Загрузить файлы на сервер не сложно, но есть несколько мелких деталей, которые должны быть учтены, иначе загрузка не будет выполнена. Во-первых, вы должны убедиться, что PHP настроен на разрешение загрузки. Проверьте ваш php.ini файл и проверьте директиву file_uploads, которая должна быть установлена в On.

1 file_uploads = On

По умолчанию загруженные файлы размещаются во временный каталог. Вы можете указать другой каталог для директивы upload_tmp_dir в php.ini. Несмотря на это, Вы должны убедиться, что процесс PHP имеет соответствующие привилегии для записи в данный каталог.

1 upload_tmp_dir = «/tmp»

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

Крайне важно, чтобы ваши формы использовали метод POST и для атрибута enctype имели значение multipart/form-data

1 <form action=»upload.php» method=»post» enctype=»multipart/form-data»>

How to use it?

Create a simple HTML file, with a form such as:

<form enctype="multipart/form-data" method="post" action="upload.php">
  <input type="file" size="32" name="image_field" value="">
  <input type="submit" name="Submit" value="upload">
</form>

Create a file called upload.php (into which you have first loaded the class):

$handle = new \Verot\Upload\Upload($_FILES);
if ($handle->uploaded) {
  $handle->file_new_name_body   = 'image_resized';
  $handle->image_resize         = true;
  $handle->image_x              = 100;
  $handle->image_ratio_y        = true;
  $handle->process('/home/user/files/');
  if ($handle->processed) {
    echo 'image resized';
    $handle->clean();
  } else {
    echo 'error : ' . $handle->error;
  }
}

How does it work?

You instanciate the class with the array where my_field is the field name from your upload form. The class will check if the original file has been uploaded to its temporary location (alternatively, you can instanciate the class with a local filename).

You can then set a number of processing variables to act on the file. For instance, you can rename the file, and if it is an image, convert and resize it in many ways. You can also set what will the class do if the file already exists.

Then you call the function to actually perform the actions according to the processing parameters you set above. It will create new instances of the original file, so the original file remains the same between each process. The file will be manipulated, and copied to the given location. The processing variables will be reset once it is done.

You can repeat setting up a new set of processing variables, and calling again as many times as you want. When you have finished, you can call to delete the original uploaded file.

If you don’t set any processing parameters and call just after instanciating the class. The uploaded file will be simply copied to the given location without any alteration or checks.

Don’t forget to add in your form tag if you want your form to upload the file.

Namespacing

The class is now namespaced in the namespace. If you have the error Fatal error: Class ‘Upload’ not found, then make sure your file belongs to the namespace, or instantiate the class with its fully qualified name:

namespace Verot\Upload;
$handle = new Upload($_FILES);

or

$handle = new \Verot\Upload\Upload($_FILES);

Instantiate the class with the local filename, as following:

$handle = new Upload('/home/user/myfile.jpg');

How to process a file uploaded via XMLHttpRequest?

Instantiate the class with the special php: keyword, as following:

$handle = new Upload('php:'.$_SERVER);

Prefixing the argument with php: tells the class to retrieve the uploaded data in php://input, and the rest is the stream’s filename, which is generally in . But you can use any other name you see fit:

$handle = new Upload('php:mycustomname.ext');

How to process raw file data?

Instantiate the class with the special data: keyword, as following:

$handle = new Upload('data:'.$file_contents);

If your data is base64-encoded, the class provides a simple base64: keyword, which will decode your data prior to using it:

$handle = new Upload('base64:'.$base64_file_contents);

How to set the language?

Instantiate the class with a second argument being the language code:

$handle = new Upload($_FILES, 'fr_FR');
$handle = new Upload('/home/user/myfile.jpg', 'fr_FR');

How to output the resulting file or picture directly to the browser?

Simply call without an argument (or with null as first argument):

$handle = new Upload($_FILES);
header('Content-type: ' . $handle->file_src_mime);
echo $handle->process();
die();

Or if you want to force the download of the file:

$handle = new Upload($_FILES);
header('Content-type: ' . $handle->file_src_mime);
header("Content-Disposition: attachment; filename=".rawurlencode($handle->file_src_name).";");
echo $handle->process();
die();

Troubleshooting

If the class doesn’t do what you want it to do, you can display the log, in order to see in details what the class does. To obtain the log, just add this line at the end of your code:

echo $handle->log;

Полный загрузить файл PHP скрипт

Полный файл «upload.php» теперь выглядит следующим:

<?php$target_dir = «uploads/»;$target_file = $target_dir . basename($_FILES);$uploadOk = 1;$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));// Check if image file is a actual image or fake imageif(isset($_POST)) {    $check = getimagesize($_FILES);    if($check !== false) {        echo «File is an image — » . $check . «.»;        $uploadOk = 1;    } else {        echo «File is not an image.»;        $uploadOk = 0;    }}// Check if file already existsif (file_exists($target_file)) {    echo «Sorry, file already exists.»;    $uploadOk = 0;}
// Check file sizeif ($_FILES > 500000) {    echo «Sorry, your file is too large.»;    $uploadOk = 0;
}// Allow certain file formatsif($imageFileType != «jpg» && $imageFileType != «png» && $imageFileType != «jpeg»&& $imageFileType != «gif» ) {    echo «Sorry, only JPG, JPEG, PNG & GIF files are allowed.»;    $uploadOk = 0;}// Check if $uploadOk is set to 0 by an errorif ($uploadOk == 0) {    echo «Sorry, your file was not uploaded.»;// if everything is ok, try to upload file} else {    if (move_uploaded_file($_FILES, $target_file)) {        echo «The file «. basename( $_FILES). » has been uploaded.»;    } else {        echo «Sorry, there was an error uploading your file.»;    }}?>

Настройка параметров PHP

Существует несколько настроек конфигурации PHP, которые вам следует предварительно проверить для успешной загрузки файлов. В этом разделе мы рассмотрим все параметры, которые важны для загрузки файлов PHP. Эти параметры можно настроить в файле php.ini.

Если вы не знаете, где найти файл php.ini, вы можете использовать , чтобы найти его. Просто создайте файл PHP на своем сервере со следующей строкой и откройте его из браузера.

Вот выдержка из установочного файла с некоторыми полезными значениями по умолчанию.

Ключевые настройки

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

Директива позволяет вам настроить максимальный размер загруженного файла. По умолчанию он установлен в (два мегабайта), и вы можете переопределить этот параметр, используя файл .htaccess. Два мегабайта не очень соответствуют сегодняшним стандартам, поэтому вам, возможно, придется это увеличить. Если вы получите сообщение об ошибке —  при попытке загрузить файл, вам необходимо увеличить это значение. Если вы это сделаете, обязательно увеличьте (см. ниже).

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

Директива позволяет настроить максимальный размер данных POST. Поскольку файлы загружаются с помощью POST-запросов, это значение должно быть больше, чем указано в директиве . Например, если ваш составляет (16 мегабайт), вам может потребоваться установить в .

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

Это максимальное количество секунд, которое скрипту разрешено анализировать входные данные. Вы должны установить его на разумное значение, если вы имеете дело с большими загрузками файлов. (60 секунд) является хорошим показателем для большинства приложений.

Директива указывает максимальный объем памяти, который может потреблять скрипт. Если вы сталкиваетесь с проблемами при загрузке больших файлов, вам необходимо убедиться, что значение этой директивы больше, чем указано в директиве . Значение по умолчанию — (128 мегабайт), поэтому, если у вас нет очень больших и , вам не нужно беспокоиться об этом.

Это максимальное количество секунд, разрешенное для работы скрипта. Если вы сталкиваетесь с проблемами при загрузке больших файлов, вы можете рассмотреть возможность увеличения этого значения. (30 секунд) должны хорошо работать для большинства приложений.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *