Метод store
Метод store класса UploadedFile используется для перемещения загруженного файла в выбранное место файловой системы. В качестве первого параметра передаётся путь к директории внутри диска, вторым параметром можно указать диск, куда сохранять файл, третьим - новое имя файла. Если диск не указан, используется диск по умолчанию.
Синтаксис
<?php
$uploadedFile->store($path, $disk, $name);
?>
Метод возвращает строку с путём к сохранённому файлу относительно корня диска.
Пример
Давайте сохраним загруженный файл в директорию 'uploads' на диске 'local':
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateHttpUploadedFile;
class FileController extends Controller
{
public function upload(Request $request)
{
$file = $request->file('image');
if ($file instanceof UploadedFile && $file->isValid()) {
$path = $file->store('uploads', 'local');
echo "File saved at: " . $path;
}
}
}
?>
Результат выполнения кода:
"File saved at: uploads/1699123456_photo.jpg"
Пример
Сохраним файл с заданным именем на публичном диске:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateHttpUploadedFile;
class FileController extends Controller
{
public function store(Request $request)
{
$file = $request->file('avatar');
if ($file instanceof UploadedFile && $file->isValid()) {
$path = $file->store('avatars', 'public', 'user_avatar.jpg');
echo "Avatar saved at: " . $path;
}
}
}
?>
Результат выполнения кода:
"Avatar saved at: avatars/user_avatar.jpg"
Пример
Если требуется сохранить файл с уникальным именем, можно передать только путь и диск:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateHttpUploadedFile;
class FileController extends Controller
{
public function save(Request $request)
{
$file = $request->file('document');
if ($file instanceof UploadedFile && $file->isValid()) {
$path = $file->store('documents', 's3');
echo "Document saved at: " . $path;
}
}
}
?>
Результат выполнения кода:
"Document saved at: documents/1699123456_67890_report.pdf"