Вот базовый код для загрузки файлов на PHP:
Метод 1: использование базовой HTML-формы и суперглобальной переменной $_FILES
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
<?php
if(isset($_POST["submit"])){
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($targetFile,PATHINFO_EXTENSION));
// Check if file already exists
if (file_exists($targetFile)) {
echo "File already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "File is too large.";
$uploadOk = 0;
}
// Allow only certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "File was not uploaded.";
} else {
// Move the file to the specified directory
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "There was an error uploading the file.";
}
}
}
?>
Этот метод использует HTML-форму с полем типа файла ввода. Код PHP проверяет различные условия, такие как размер файла, формат файла и наличие файла, прежде чем перемещать его в указанный каталог.
Метод 2: использование библиотеки PHP – Symfony HttpFoundation (требуется установка внешней библиотеки)
<?php
require_once 'vendor/autoload.php';
use Symfony\Component\HttpFoundation\File\UploadedFile;
if(isset($_POST["submit"])){
$uploadedFile = new UploadedFile($_FILES['fileToUpload']['tmp_name'], $_FILES['fileToUpload']['name']);
// Specify the target directory
$targetDir = 'uploads/';
$targetFile = $targetDir . $uploadedFile->getClientOriginalName();
// Move the file to the specified directory
$uploadedFile->move($targetDir, $targetFile);
echo 'The file ' . $uploadedFile->getClientOriginalName() . ' has been uploaded.';
}
?>
Этот метод использует библиотеку Symfony HttpFoundation для обработки загрузки файлов. Класс UploadedFile используется для создания объекта, представляющего загруженный файл, а затем вызывается метод move() для перемещения файла в нужный каталог.