Как на PHP организовать выгрузку файлов на сервер по протоколу HTTP с помощью запроса POST, процесс по шагам:
1. Сделайте настройки в файле php.ini, которые будут разрешать выгрузку файлов и задавать для него определенные ограничения. Пример файла php.ini, где были сделаны соответствующие изменения:
Обычно файл php.ini находится на сервере в каталоге /var/www/php-bin/имя_пользователя/, для получения этой информации можно выполнить функцию php_ini_loaded_file() из любого файла с расширением *.php:
Для этого выполните функцию phpinfo() из любого файла с расширением *.php:
< ?php
phpinfo();
?>
2. Создайте на сервере в корневом каталоге папку, где будут находиться PHP-скрипты, запомните её название. Предположим для примера, что это будет папка FileUploadScripts_6cceb659.
Примечание: для безопасности лучше для этой папки придумать случайное название, и хранить его в секрете.
3. Создайте в этой папке 2 скрипта index.php и upload.php со следующим содержимым.
if (isset($_POST['uploadBtn']) &&$_POST['uploadBtn'] =='Upload')
{
if (isset($_FILES['uploadedFile']) &&$_FILES['uploadedFile']['error'] === UPLOAD_ERR_OK)
{
// Получение информации по выгружаемому файлу:$fileTmpPath=$_FILES['uploadedFile']['tmp_name'];
$fileName=$_FILES['uploadedFile']['name'];
$fileSize=$_FILES['uploadedFile']['size'];
$fileType=$_FILES['uploadedFile']['type'];
$fileNameCmps=explode(".", $fileName);
$fileExtension= strtolower(end($fileNameCmps));
// Исправление имени файла:$newFileName=md5(time() .$fileName) .'.'.$fileExtension;
// Проверка расширения файла, оно должно соответствовать следующим// разрешенным расширениям:$allowedfileExtensions=array('jpg', 'gif', 'png', 'zip', 'txt', 'xls', 'doc');
if (in_array($fileExtension, $allowedfileExtensions))
{
// Директория, куда будет перемещен выгруженный файл:$uploadFileDir='./uploaded_files/';
$dest_path=$uploadFileDir.$newFileName;
if(move_uploaded_file($fileTmpPath, $uploadFileDir.$fileName))
{
$message='File is successfully uploaded.';
}
else
{
$message='There was some error moving the file to upload directory.
Please make sure the upload directory is writable by web server.';
}
}
else
{
$message='Upload failed. Allowed file types: '.implode(',', $allowedfileExtensions);
}
}
else
{
$message='There is some error in the file upload. Please check the following error.< br>';
$message.='Error:'.$_FILES['uploadedFile']['error'];
}
}$_SESSION['message'] =$message;
header("Location: index.php");
4. Создайте в папке, которую создали на шаге 2, подкаталог с именем uploaded_files. В этот подкаталог будут сохраняться выгружаемые файлы.
[Как пользоваться]
1. Откройте в браузере секретную ссылку http://имядомена.ru/FileUploadScripts_6cceb659/, отобразится форма:
2. Выберите файл, кликнув на кнопку Choose File. Предположим, что был выбран файл testfile.zip.
3. Кликните на кнопку Upload. Файл будет записан на веб-сервер в каталог uploaded_files.
Полный путь до сохраненного файла будет следующий: