Skip to content

webman-tech/laravel-filesystem

Repository files navigation

webman-tech/laravel-filesystem

Laravel illuminate/filesystem for webman

介绍

站在巨人(laravel)的肩膀上使文件存储使用更加可靠便捷

所有方法和配置与 laravel 几乎一模一样,因此使用方式完全参考 Laravel文档 即可

安装

由于 laravel 9 升级了 league/flysystem 到 3.x,详见Laravel9升级说明 ,低于 larval 9 的版本需要使用 league/flysystem 1.x 的版本 ,因此安装该依赖需要手动安装 illuminate/filesystemleague/flysystem ,目前正常能根据 php 版本自动安装响应版本的 league/flysystem 无需手动

  1. 安装 webman-tech/laravel-filesystem
composer require webman-tech/laravel-filesystem
  1. 安装 league/flysystem

根据 illuminate/filesystem 安装后的版本(通过 composer info illuminate/filesystem 查看)

# illuminate/filesystem < 9.0
composer require league/flysystem:~1.1
# illuminate/filesystem >= 9.0
composer require league/flysystem

使用

所有 API 同 laravel,以下仅对有些特殊的操作做说明

目录权限问题

Unix 系统下需要给予 storage/app 目录写权限

Facade 入口

使用 WebmanTech\LaravelFilesystem\Facades\File 代替 Illuminate\Support\Facades\File

使用 WebmanTech\LaravelFilesystem\Facades\Storage 代替 Illuminate\Support\Facades\Storage

建立软链

php webman storage:link

建立软链之后建议将软链(如 /public/storage)加入根目录下的 .gitignore

同 Laravel,可以支持自定义建立多个对外的路劲软链

Request 文件上传

原 Laravel 下通过 $request()->file() 之后的快捷文件操作,需要使用 webman-tech/polyfill 来支持

安装

composer require webman-tech/polyfill illuminate/http

使用

<?php

namespace app\controller;

use support\Request;
use WebmanTech\Polyfill\LaravelRequest;
use WebmanTech\Polyfill\LaravelUploadedFile;

class UserAvatarController
{
    public function update(Request $request)
    {
        $path = LaravelRequest::wrapper($request)->file('file')->store('avatars');
        // 或者
        $path = LaravelUploadedFile::wrapper($request->file('avatar'))->store('avatars');

        return response($path);
    }
}

自定义文件系统

通过在 filesystems.php 配置文件的 disks 中的 driver 直接使用驱动扩展类的 class 名即可(驱动扩展实现 WebmanTech\LaravelFilesystem\Extend\ExtendInterface

目前提供以下非 Laravel 官方库支持的文件系统,可自行参考替换相应的实现

排名不分先后,不做具体推荐

厂商 扩展包 支持 Laravel>=9 安装使用
Aliyun OSS iidestiny/flysystem-oss 文档
QiNiu overtrue/flysystem-qiniu 文档
Tencent COS overtrue/flysystem-cos 文档
Aliyun OSS alphasnow/aliyun-oss-laravel 文档