Метод getClientOriginalExtension
Метод getClientOriginalExtension принадлежит классу Illuminate\Http\UploadedFile и используется для получения оригинального расширения загруженного файла. Расширение определяется на основе исходного имени файла, переданного в запросе от клиента, а не на основе MIME-типа или фактического содержимого файла. Это важно учитывать при проверке безопасности, так как клиент может подменить расширение.
Метод не принимает никаких параметров и возвращает строку, содержащую расширение файла, например, 'jpg', 'png' или 'pdf'. Если файл был загружен без расширения, метод вернёт пустую строку.
Синтаксис
<?php
$extension = $uploadedFile->getClientOriginalExtension();
?>
Пример
Получим расширение загруженного файла в контроллере:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileController extends Controller
{
public function upload(Request $request)
{
$file = $request->file('document');
if ($file->isValid()) {
$extension = $file->getClientOriginalExtension();
echo "Extension: " . $extension;
}
}
}
?>
Результат выполнения кода при загрузке файла 'image.jpg':
"Extension: jpg"
Пример
Проверим, что расширение соответствует допустимому списку:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileController extends Controller
{
public function upload(Request $request)
{
$file = $request->file('image');
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];
if ($file->isValid()) {
$extension = $file->getClientOriginalExtension();
if (in_array($extension, $allowedExtensions)) {
echo "Allowed extension: " . $extension;
} else {
echo "Extension not allowed: " . $extension;
}
}
}
}
?>
Результат выполнения кода при загрузке файла 'photo.png':
"Allowed extension: png"
Результат выполнения кода при загрузке файла 'script.exe':
"Extension not allowed: exe"
Пример
Используем расширение для формирования уникального имени файла:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class FileController extends Controller
{
public function upload(Request $request)
{
$file = $request->file('document');
if ($file->isValid()) {
$extension = $file->getClientOriginalExtension();
$uniqueName = Str::uuid() . '.' . $extension;
$file->storeAs('uploads', $uniqueName);
echo "File saved as: " . $uniqueName;
}
}
}
?>
Результат выполнения кода:
"File saved as: 550e8400-e29b-41d4-a716-446655440000.pdf"
Смотрите также
-
метод
getClientOriginalName,
который возвращает оригинальное имя файла -
метод
extension,
который возвращает расширение на основе MIME-типа -
метод
getMimeType,
который возвращает MIME-тип файла -
метод
hashName,
который генерирует уникальное имя для файла