PHP: как сделать кнопку выгрузки файла |
![]() |
Добавил(а) microsin |
Как на PHP организовать выгрузку файлов на сервер по протоколу HTTP с помощью запроса POST, процесс по шагам: 1. Сделайте настройки в файле php.ini, которые будут разрешать выгрузку файлов и задавать для него определенные ограничения. Пример файла php.ini, где были сделаны соответствующие изменения: sendmail_path = "/usr/sbin/sendmail -t -i -f webmaster@имядомена.ru" session.save_path = "/var/www/имяпользователя/data/bin-tmp" ; Разрешается ли выгрузка. file_uploads = On ; Временная папка для выгрузки. Если не установлено, ; то будет использоваться системное умолчание. upload_tmp_dir = /tmp ; Максимальный разрешенный размер выгружаемых файлов. upload_max_filesize = 16M ; Максимальное разрешенное количество файлов для выгрузки ; в одном запросе. max_file_uploads = 20 ; Максимальный размер данных POST, который примет PHP. post_max_size = 20M max_input_time = 60 memory_limit = 128M max_execution_time = 30 Обычно файл php.ini находится на сервере в каталоге /var/www/php-bin/имя_пользователя/, для получения этой информации можно выполнить функцию php_ini_loaded_file() из любого файла с расширением *.php: < ?php
echo php_ini_loaded_file(); ?>
Для этого выполните функцию phpinfo() из любого файла с расширением *.php: < ?php
phpinfo();
?>
2. Создайте на сервере в корневом каталоге папку, где будут находиться PHP-скрипты, запомните её название. Предположим для примера, что это будет папка FileUploadScripts_6cceb659. Примечание: для безопасности лучше для этой папки придумать случайное название, и хранить его в секрете. 3. Создайте в этой папке 2 скрипта index.php и upload.php со следующим содержимым. Файл index.php: < ?php
session_start();
?> < !DOCTYPE html> < html> < head> < title>PHP File Upload< /title> < /head> < body> < ?php if (isset($_SESSION['message']) && $_SESSION['message']) { printf('< b>%s< /b>', $_SESSION['message']); unset($_SESSION['message']); } ?> < form method="POST" action="upload.php" enctype="multipart/form-data"> < div> < span>Upload a File:< /span> < input type="file" name="uploadedFile" /> < /div> < input type="submit" name="uploadBtn" value="Upload" /> < /form> < /body> < /html> Файл upload.php: < ?php
session_start();
$message = ''; 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. Полный путь до сохраненного файла будет следующий: http://имядомена.ru/FileUploadScripts_6cceb659/uploaded_files/testfile.zip [Ссылки] 1. How to Upload a File in PHP site:code.tutsplus.com.com. |