ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
×

PHP учебник

PHP HOME PHP Intro PHP Install PHP Syntax PHP Variables PHP Echo / Print PHP Data Types PHP Strings PHP Constants PHP Operators PHP If...Else...Elseif PHP Switch PHP While Loops PHP For Loops PHP Functions PHP Arrays PHP Sorting Arrays PHP Superglobals

PHP Forms

PHP Form Handling PHP Form Validation PHP Form Required PHP Form URL/E-mail PHP Form Complete

PHP Advanced

PHP Arrays Multi PHP Date and Time PHP Include PHP File Handling PHP File Open/Read PHP File Create/Write PHP File Upload PHP Cookies PHP Sessions PHP Filters PHP Filters Advanced PHP Error Handling PHP Exception

MySQL Database

MySQL Database MySQL Connect MySQL Create DB MySQL Create Table MySQL Insert Data MySQL Get Last ID MySQL Insert Multiple MySQL Prepared MySQL Select Data MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP - XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Intro AJAX PHP AJAX Database AJAX XML AJAX Live Search AJAX RSS Reader AJAX Poll

PHP Examples


PHP Reference

PHP Overview PHP Array PHP Calendar PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones


PHP 5 Загрузка файла


С помощью PHP легко загружать файлы на сервер.

Однако, с легкостью приходит опасность, поэтому всегда будьте осторожны, позволяя файл загружает!


Настройка файла "PHP. ini"

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

В файле "PHP. ini" найдите file_uploads директиву и установите для нее значение On:

file_uploads = On

Создание 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» тега < input > показывает поле ввода в виде элемента управления «Выбор файла» с кнопкой «Обзор» рядом с элементом управления вводом

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



Создание скрипта загрузки файла PHP

Файл "upload. php" содержит код для загрузки файла:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>

PHP скрипт объяснил:

  • $target_dir = "uploads/" - Указывает каталог, в который будет помещен файл
  • $target_file Указывает путь к загружаемому файлу
  • $uploadOk=1 еще не используется (будет использоваться позже)
  • $imageFileType содержит расширение файла (в нижнем регистре)
  • Next, Проверьте, является ли файл изображения реальным изображением или фальшивым изображением

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


Проверить, если файл уже существует

Теперь мы можем добавить некоторые ограничения.

Во-первых, мы будем проверять, если файл уже существует в папке "uploads". Если это так, выводится сообщение об ошибке, и $uploadOk имеет значение 0:

// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}

Ограничить размер файла

Поле ввода файла в нашей HTML-форме выше называется "филетауплоад".

Теперь мы хотим проверить размер файла. Если файл больше, чем 500KB, отображается сообщение об ошибке и $uploadOk имеет значение 0:

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

Ограничить тип файла

Приведенный ниже код позволяет пользователям загружать файлы JPG, JPEG, PNG и GIF. Все другие типы файлов выдают сообщение об ошибке перед установкой $uploadOk на 0:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}

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

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

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($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 error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

Полная ссылка на файловую систему PHP

Для полной ссылки на функции файловой системы, перейдите на наш полный Ссылка на файловую систему PHP.