Метод putFileAs
Метод putFileAs применяется к фасаду Storage
и позволяет сохранить загруженный файл в указанную директорию,
задавая при этом произвольное имя для сохраняемого файла.
Первым параметром передаётся путь к директории, вторым -
экземпляр класса UploadedFile или содержимое файла,
третьим - желаемое имя файла. Четвёртым параметром можно передать
опции для настройки видимости (public или private).
Синтаксис
<?php
Storage::putFileAs($directory, $file, $name, $options);
?>
Пример
Сохраним загруженный файл с именем, которое мы сами укажем, в директорию 'avatars':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class UserController extends Controller
{
public function uploadAvatar(Request $request)
{
$file = $request->file('avatar');
$path = Storage::putFileAs('avatars', $file, 'user_avatar.jpg');
echo $path;
}
}
?>
Результат выполнения кода:
"avatars/user_avatar.jpg"
Пример
Создадим уникальное имя файла с помощью хеширования и сохраним его в директорию 'photos':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class PhotoController extends Controller
{
public function store(Request $request)
{
$file = $request->file('photo');
$name = $file->hashName();
$path = Storage::putFileAs('photos', $file, $name);
echo $path;
}
}
?>
Результат выполнения кода:
"photos/1a2b3c4d5e6f7g8h9i0j.jpg"
Пример
Сохраним файл с публичным доступом, указав опцию 'public' в четвёртом параметре:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
public function uploadPublic(Request $request)
{
$file = $request->file('document');
$path = Storage::putFileAs('documents', $file, 'report.pdf', 'public');
echo $path;
}
}
?>
Результат выполнения кода:
"documents/report.pdf"
Пример
Используем метод с содержимым файла в виде строки вместо загруженного файла:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class ContentController extends Controller
{
public function saveContent()
{
$content = 'This is the content of the file';
$path = Storage::putFileAs('texts', $content, 'note.txt');
echo $path;
}
}
?>
Результат выполнения кода:
"texts/note.txt"