Поиск…
конфигурация
Файл конфигурации файловой системы находится в файле config/filesystems.php
. Внутри этого файла вы можете настроить все ваши «диски». Каждый диск представляет собой определенный драйвер хранилища и место хранения. Примеры конфигураций для каждого поддерживаемого драйвера включены в файл конфигурации. Таким образом, просто измените конфигурацию, чтобы отразить ваши предпочтения и учетные данные для хранения!
Перед использованием драйверов S3 или Rackspace вам необходимо установить соответствующий пакет через Composer:
- Amazon S3:
league/flysystem-aws-s3-v2 ~1.0
- Rackspace:
league/flysystem-rackspace ~1.0
Конечно, вы можете настроить столько дисков, сколько хотите, и даже можете иметь несколько дисков, которые используют один и тот же драйвер.
При использовании локального драйвера обратите внимание, что все операции с файлами относятся к корневому каталогу, определенному в вашем файле конфигурации. По умолчанию это значение устанавливается в storage/app directory
. Поэтому следующий метод сохранит файл в файле storage/app/file.txt
:
Storage::disk('local')->put('file.txt', 'Contents');
Основное использование
Фасад Storage
может использоваться для взаимодействия с любым из ваших сконфигурированных дисков. В качестве альтернативы вы можете набрать команду « Illuminate\Contracts\Filesystem\Factory
на любом классе, который разрешен через контейнер службы Laravel.
Получение отдельного диска
$disk = Storage::disk('s3');
$disk = Storage::disk('local');
Определение наличия файла
$exists = Storage::disk('s3')->exists('file.jpg');
Способы вызова на диске по умолчанию
if (Storage::exists('file.jpg'))
{
//
}
Получение содержимого файла
$contents = Storage::get('file.jpg');
Настройка содержимого файла
Storage::put('file.jpg', $contents);
Подготовка к файлу
Storage::prepend('file.log', 'Prepended Text');
Добавить в файл
Storage::append('file.log', 'Appended Text');
Удалить файл
Storage::delete('file.jpg');
Storage::delete(['file1.jpg', 'file2.jpg']);
Скопировать файл в новое место
Storage::copy('old/file1.jpg', 'new/file1.jpg');
Переместить файл в новое место
Storage::move('old/file1.jpg', 'new/file1.jpg');
Получить размер файла
$size = Storage::size('file1.jpg');
Получить последнее время модификации (UNIX)
$time = Storage::lastModified('file1.jpg');
Получить все файлы в каталоге
$files = Storage::files($directory);
// Recursive...
$files = Storage::allFiles($directory);
Получить все каталоги в каталоге
$directories = Storage::directories($directory);
// Recursive...
$directories = Storage::allDirectories($directory);
Создать каталог
Storage::makeDirectory($directory);
Удалить каталог
Storage::deleteDirectory($directory);
Пользовательские файловые системы
Интеграция FlySystem от Laravel предоставляет драйверы для нескольких «драйверов» из коробки; однако Flysystem не ограничивается ими и имеет адаптеры для многих других систем хранения. Вы можете создать собственный драйвер, если хотите использовать один из этих дополнительных адаптеров в своем приложении Laravel. Не волнуйся, это не слишком сложно!
Чтобы настроить пользовательскую файловую систему, вам необходимо создать поставщика услуг, такого как DropboxFilesystemServiceProvider
. В способе boot
провайдера вы можете ввести экземпляр договора Illuminate\Contracts\Filesystem\Factory
и вызвать метод extend
инъецируемого экземпляра. Кроме того, вы можете использовать метод extend
фасада Disk
.
Первым аргументом метода extend
является имя драйвера, а второе - закрытие, которое получает переменные $app
и $config
. Завершение решения должно возвращать экземпляр League\Flysystem\Filesystem
.
Примечание: переменная $ config уже содержит значения, определенные в
config/filesystems.php
для указанного диска. Пример Dropbox
<?php namespace App\Providers;
use Storage;
use League\Flysystem\Filesystem;
use Dropbox\Client as DropboxClient;
use League\Flysystem\Dropbox\DropboxAdapter;
use Illuminate\Support\ServiceProvider;
class DropboxFilesystemServiceProvider extends ServiceProvider {
public function boot()
{
Storage::extend('dropbox', function($app, $config)
{
$client = new DropboxClient($config['accessToken'], $config['clientIdentifier']);
return new Filesystem(new DropboxAdapter($client));
});
}
public function register()
{
//
}
}
Создание символической ссылки на веб-сервере с использованием SSH
В документации Laravel должна быть создана символическая ссылка (символическая ссылка или софт-ссылка) из общедоступного / хранилища в хранилище / приложение / публикация, чтобы сделать файлы доступными из Интернета.
(ЭТА ПРОЦЕДУРА СОЗДАВАЕТ СИМВОЛИЧЕСКУЮ ЛИНИЮ В РАЙОНЕ ПРОЕКТА LARAVEL)
Ниже приведены шаги по созданию символической ссылки на вашем веб-сервере Linux с использованием SSH-клиента:
Подключите и войдите в систему на свой веб-сервер, используя SSH-клиент (например, PUTTY).
Свяжите хранилище / приложение / общедоступное с общедоступным / хранилищем с помощью синтаксиса
ln -s target_path link_path
Пример (в каталоге файлов CPanel)
ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage
(Будет создана папка с именем storage , чтобы связать путь с индикатором >>> на значке папки.)