Szukaj…
Konfiguracja
Plik konfiguracyjny systemu plików znajduje się w config/filesystems.php
. W tym pliku możesz skonfigurować wszystkie swoje „dyski”. Każdy dysk reprezentuje określony sterownik i lokalizację pamięci. Przykładowe konfiguracje dla każdego obsługiwanego sterownika znajdują się w pliku konfiguracyjnym. Po prostu zmodyfikuj konfigurację, aby odzwierciedlić preferencje dotyczące przechowywania i poświadczenia!
Przed użyciem sterowników S3 lub Rackspace należy zainstalować odpowiedni pakiet za pośrednictwem Composer:
- Amazon S3:
league/flysystem-aws-s3-v2 ~1.0
S3league/flysystem-aws-s3-v2 ~1.0
- Rackspace:
league/flysystem-rackspace ~1.0
Oczywiście możesz skonfigurować dowolną liczbę dysków, a nawet mieć wiele dysków korzystających z tego samego sterownika.
Podczas korzystania ze sterownika lokalnego należy pamiętać, że wszystkie operacje na plikach są względne w stosunku do katalogu głównego zdefiniowanego w pliku konfiguracyjnym. Domyślnie ta wartość jest ustawiona na storage/app directory
. Dlatego następująca metoda zapisałaby plik w storage/app/file.txt
:
Storage::disk('local')->put('file.txt', 'Contents');
Podstawowe użycie
Fasada Storage
może być używana do interakcji z dowolnymi skonfigurowanymi dyskami. Alternatywnie możesz wpisać wskazówkę dotyczącą Illuminate\Contracts\Filesystem\Factory
na dowolnej klasie, która jest rozwiązywana za pośrednictwem kontenera usług Laravel.
Pobieranie konkretnego dysku
$disk = Storage::disk('s3');
$disk = Storage::disk('local');
Ustalanie, czy plik istnieje
$exists = Storage::disk('s3')->exists('file.jpg');
Metody wywoływania na dysku domyślnym
if (Storage::exists('file.jpg'))
{
//
}
Pobieranie zawartości pliku
$contents = Storage::get('file.jpg');
Ustawianie zawartości pliku
Storage::put('file.jpg', $contents);
Przygotuj do pliku
Storage::prepend('file.log', 'Prepended Text');
Dołącz do pliku
Storage::append('file.log', 'Appended Text');
Usuń plik
Storage::delete('file.jpg');
Storage::delete(['file1.jpg', 'file2.jpg']);
Skopiuj plik do nowej lokalizacji
Storage::copy('old/file1.jpg', 'new/file1.jpg');
Przenieś plik do nowej lokalizacji
Storage::move('old/file1.jpg', 'new/file1.jpg');
Uzyskaj rozmiar pliku
$size = Storage::size('file1.jpg');
Uzyskaj czas ostatniej modyfikacji (UNIX)
$time = Storage::lastModified('file1.jpg');
Pobierz wszystkie pliki w katalogu
$files = Storage::files($directory);
// Recursive...
$files = Storage::allFiles($directory);
Uzyskaj wszystkie katalogi w jednym katalogu
$directories = Storage::directories($directory);
// Recursive...
$directories = Storage::allDirectories($directory);
Utwórz katalog
Storage::makeDirectory($directory);
Usuń katalog
Storage::deleteDirectory($directory);
Niestandardowe systemy plików
Integracja Laravel Flysystem zapewnia sterowniki dla kilku „sterowników” po wyjęciu z pudełka; jednak Flysystem nie ogranicza się do nich i ma adaptery do wielu innych systemów pamięci masowej. Możesz utworzyć niestandardowy sterownik, jeśli chcesz użyć jednego z tych dodatkowych adapterów w aplikacji Laravel. Nie martw się, to nie jest zbyt trudne!
Aby skonfigurować niestandardowy system plików, musisz utworzyć dostawcę usług, takiego jak DropboxFilesystemServiceProvider
. W metodzie boot
dostawcy można wstrzyknąć instancję Illuminate\Contracts\Filesystem\Factory
i wywołać metodę extend
wstrzykiwanej instancji. Alternatywnie możesz użyć metody extend
elewacji Disk
.
Pierwszy argument metody extend
to nazwa sterownika, a drugi to Closure, które otrzymuje zmienne $app
i $config
. Zamknięcie resolvera musi zwrócić instancję League\Flysystem\Filesystem
.
Uwaga: Zmienna $ config będzie już zawierać wartości zdefiniowane w
config/filesystems.php
dla określonego dysku. Przykład 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()
{
//
}
}
Tworzenie dowiązania symbolicznego na serwerze WWW za pomocą SSH
W dokumentacji Laravela należy utworzyć dowiązanie symboliczne (dowiązanie symboliczne lub miękkie) z public / storage do storage / app / public, aby udostępnić pliki z sieci.
(NINIEJSZA PROCEDURA STWORZY SYMBOLICZNE LINK W KATALOGU PROJEKTU LARAVEL)
Oto kroki, w jaki sposób można utworzyć symboliczne łącze na serwerze linuksowym za pomocą klienta SSH:
Połącz się i zaloguj do swojego serwera internetowego za pomocą klienta SSH (np. PUTTY).
Połącz pamięć / aplikację / publiczny z publicznym / magazyn, używając składni
ln -s target_path link_path
Przykład (w katalogu plików CPanel)
ln -s /home/cpanel_username/project_name/storage/app/public /home/cpanel_sername/project_name/public/storage
(Zostanie utworzony folder o nazwie storage , aby połączyć ścieżkę ze wskaźnikiem >>> na ikonie folderu).