Метод hashName
Метод hashName применяется к объекту загруженного файла
UploadedFile и возвращает строку, содержащую
уникальное имя файла, основанное на его содержимом.
Этот метод не принимает никаких параметров и автоматически
генерирует имя с использованием алгоритма хеширования SHA-1.
Полученное имя обычно используется для сохранения файла
на сервере, чтобы гарантировать его уникальность.
Синтаксис
<?php
$name = $uploadedFile->hashName();
?>
Пример
Давайте получим уникальное имя для загруженного файла:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateHttpUploadedFile;
class FileController extends Controller
{
public function upload(Request $request)
{
$file = $request->file('document');
if ($file instanceof UploadedFile) {
$hashName = $file->hashName();
echo $hashName;
}
}
}
?>
Результат выполнения кода для файла с именем "photo.jpg":
"e8d5b41d6a8f2c3b9a6e4f7d1c2a3b4c5d6e7f89.jpg"
Пример
Давайте используем hashName для сохранения файла
в хранилище Laravel:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesStorage;
use IlluminateHttpUploadedFile;
class FileController extends Controller
{
public function store(Request $request)
{
$file = $request->file('avatar');
if ($file instanceof UploadedFile) {
$path = $file->storeAs('avatars', $file->hashName(), 'public');
echo $path;
}
}
}
?>
Результат выполнения кода:
"avatars/9a8f7e6d5c4b3a2f1e0d9c8b7a6f5e4d3c2b1a0f.jpg"
Пример
Давайте сгенерируем имя файла без расширения с помощью дополнительных методов:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateHttpUploadedFile;
class FileController extends Controller
{
public function process(Request $request)
{
$file = $request->file('document');
if ($file instanceof UploadedFile) {
$hash = $file->hashName();
$nameWithoutExt = pathinfo($hash, PATHINFO_FILENAME);
echo $nameWithoutExt;
}
}
}
?>
Результат выполнения кода:
"e8d5b41d6a8f2c3b9a6e4f7d1c2a3b4c5d6e7f89"
Пример
Давайте сохраним файл с хешированным именем и проверим, существует ли он:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesStorage;
use IlluminateHttpUploadedFile;
class FileController extends Controller
{
public function uploadAndCheck(Request $request)
{
$file = $request->file('photo');
if ($file instanceof UploadedFile) {
$hashName = $file->hashName();
$path = $file->storeAs('photos', $hashName, 'public');
if (Storage::disk('public')->exists('photos/' . $hashName)) {
echo "File stored successfully";
} else {
echo "File not found";
}
}
}
}
?>
Результат выполнения кода:
"File stored successfully"
Смотрите также
-
метод
store,
который сохраняет загруженный файл в хранилище -
метод
storeAs,
который сохраняет файл с указанным именем -
метод
getClientOriginalName,
который возвращает оригинальное имя загруженного файла -
метод
extension,
который возвращает расширение загруженного файла