1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wtto00-Aliyun-oss-storage

Клонировать/Скачать
readme_en.md 9.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 01:44 3c436f2

Aliyun-oss-storage для Laravel 5+

Этот репозиторий является ответвлением от jacobcyl/Aliyun-oss-storage. Поскольку автор долгое время не обновлял его, я немного модифицировал и переиздал его.

Алиyun oss файловая система хранения данных для laravel 5. Вы можете использовать Aliyun OSS так же, как обычное хранилище Laravel.

Вдохновение

Требования

  • Laravel 5+
  • расширение cURL

Установка

Чтобы установить AliOSS-storage, вы можете просто выполнить следующую команду:

composer require wtto/ali-oss-storage

Затем в вашем config/app.php добавьте эту строку в массив провайдеров:

Wtto\AliOSS\AliOssServiceProvider::class,

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

Добавьте следующее в app/filesystems.php:

'disks'=>[
    ...
    'oss' => [
        'driver'            => 'oss',
        'access_id'         => env('ALIOSS_KEYID', null), //Ваш Aliyun OSS AccessKeyId
        'access_key'        => env('ALIOSS_KEYSECRET', null), //Ваш Aliyun OSS AccessKeySecret
        'bucket'            => env('ALIOSS_BUCKETNAME', null), //Имя корзины OSS
        'endpoint'          => env('ALIOSS_ENDPOINT', null), //<конечная точка OSS, например: oss-cn-hangzhou.aliyuncs.com | пользовательский домен, например: img.abc.com> узел OSS во внешней сети или настраиваемый внешний домен
        'endpoint_internal' => env('ALIOSS_ENDPOINT_INTERNAL', null), //<внутренняя конечная точка [узел OSS внутренней сети] например: oss-cn-shenzhen-internal.aliyuncs.com> v2.0.4 новое свойство конфигурации, если оно пустое, по умолчанию используется конфигурация endpoint (поскольку проблема с загрузкой во внутреннюю сеть не решена, пожалуйста, временно не используйте внутренний узел загрузки, мы общаемся с техническим персоналом Али)
        'cdnDomain'         => env('ALIOSS_DOMAIN', null), //<домен CDN, домен cdn> Если isCName истинно, getUrl будет определять, следует ли использовать cdnDomain для генерации URL, если cdnDomain не установлен, то используется endpoint для создания URL, в противном случае используется cdn
        'ssl'               => env('ALIOSS_SSL', false), // true для использования 'https://' и false для использования 'http://'. по умолчанию — false,
        'isCName'           => env('ALIOSS_CNAME', false), // Использовать ли настраиваемый домен, true: Storage.url() будет использовать настраиваемый cdn или домен для создания файла url, false: использовать внешний узел для создания url
        'debug'             => env('ALIOSS_DEBUG', true),
    ],
    ...
]

Затем установите драйвер по умолчанию и конфигурацию oss в .env:

FILESYSTEM_DRIVER=oss

ALIOSS_KEYID=<Ваш Aliyun OSS AccessKeyId>
ALIOSS_KEYSECRET=<Ваш Aliyun OSS AccessKeySecret>
ALIOSS_BUCKETNAME=<Имя корзины OSS>
ALIOSS_ENDPOINT=<конечная точка OSS, например: oss-cn-hangzhou.aliyuncs.com >
ALIOSS_ENDPOINT_INTERNAL=<внутренняя конечная точка [узел OSS внутренней сети]>
ALIOSS_DOMAIN=<домен CDN, домен cdn>
ALIOSS_SSL=<true|false>
ALIOSS_CNAME=<true|false>
ALIOSS_DEBUG=<true|false>

Примечание: Если ваш сервер и ваша корзина OSS находятся не в одном регионе, не настраивайте ALIOSS_ENDPOINT_INTERNAL.

Если ALIOSS_ENDPOINT_INTERNAL настроен, для передачи будет использоваться внутренняя сеть Alibaba cloud, независимо от того, настроены ли ALIOSS_CNAME и ALIOSS_DOMAIN.

Приоритет передачи: ALIOSS_ENDPOINT_INTERNAL > ALIOSS_CNAME=true && ALIOSS_DOMAIN > ALIOSS_ENDPOINT.

Хорошо! Конфигурация завершена. Просто свободно используйте Aliyun OSS как Storage!

Использование

См. документацию Laravel для Storage Или вы можете узнать здесь:

  1. Сначала необходимо использовать фасад Storage

    use Illuminate\Support\Facades\Storage;
  2. Затем вы можете использовать все API хранилища laravel

    Storage::disk('oss'); // если по умолчанию файловые системы драйвера - oss, вы можете пропустить этот шаг
    
    //получить все файлы указанной корзины (см. конфигурацию)
    Storage::files($directory);
    Storage::allFiles($directory);
    
    Storage::put('path/to/file/file.jpg', $contents); //первый параметр - целевой путь к файлу, второй параметр - содержимое файла
    Storage::putFile('path/to/file/file.jpg', 'local/path/to/local_file.jpg'); // загрузить файл из локального пути
    
    Storage::get('path/to/file/file.jpg'); // получить объект файла по пути
    Storage::exists('path/to/file/file.jpg'); // **Определение существования файла в хранилище (OSS)**
    

Storage::size('path/to/file/file.jpg'); // получение размера файла (в байтах) Storage::lastModified('path/to/file/file.jpg'); // определение даты последнего изменения

Storage::directories($directory); // получение всех каталогов в заданном каталоге Storage::allDirectories($directory); // рекурсивное получение всех каталогов в заданном каталоге

Storage::copy('old/file1.jpg', 'new/file1.jpg'); Storage::move('old/file1.jpg', 'new/file1.jpg'); Storage::rename('path/to/file1.jpg', 'path/to/file2.jpg');

Storage::prepend('file.log', 'Prepended Text'); // добавление текста в начало файла Storage::append('file.log', 'Appended Text'); // добавление текста в конец файла

Storage::delete('file.jpg'); Storage::delete(['file1.jpg', 'file2.jpg']);

Storage::makeDirectory($directory); // создание каталога Storage::deleteDirectory($directory); // удаление каталога с файлами, используйте с осторожностью

// обновление журналов // новый плагин для версии 2.0 Storage::putRemoteFile('target/path/to/file/jacob.jpg', 'http://example.com/jacob.jpg'); // загрузка удалённого файла в хранилище по URL // новая функция для версии 2.0.1 Storage::url('path/to/img.jpg'); // получение URL файла // новая функция для версии 2.1.1 Storage::signUrl('path/to/img.jpg',$timeout); // получение URL файла с подписью, значение по умолчанию для $timeout = 3600 // новая функция для версии 2.3.0 Storage::objects($directory); // получение всех файлов и каталогов в заданном каталоге Storage::allObjects($directory); // рекурсивное получение всех файлов и каталогов в заданном каталоге // новая функция для версии 2.3.1 Storage::url2path($url); // получение пути из URL Storage::copyDirectory('path/from/','path/to/'); // копирование каталога Storage::moveDirectory('path/from/','path/to/'); // перемещение каталога Storage::renameDirectory('path/from/','path/to/'); // переименование каталога // постраничный запрос объектов в заданной позиции и возврат маркера следующей страницы Storage::objects($directory, $page_size = null, $next_marker = ''); // получение файлов и каталогов по страницам и маркер следующей страницы

## Документация

Более подробную информацию о разработке см. в [Aliyun OSS DOC](https://help.aliyun.com/document_detail/32099.html?spm=5176.doc31981.6.335.eqQ9dM).

## Лицензия

Исходный код выпущен под лицензией MIT. Дополнительную информацию см. в файле LICENSE.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wtto00-Aliyun-oss-storage.git
git@api.gitlife.ru:oschina-mirror/wtto00-Aliyun-oss-storage.git
oschina-mirror
wtto00-Aliyun-oss-storage
wtto00-Aliyun-oss-storage
master