Поиск…


конфигурация

Файл конфигурации файловой системы находится в файле 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-клиента:

  1. Подключите и войдите в систему на свой веб-сервер, используя SSH-клиент (например, PUTTY).

  2. Свяжите хранилище / приложение / общедоступное с общедоступным / хранилищем с помощью синтаксиса

    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 , чтобы связать путь с индикатором >>> на значке папки.)



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow