【问题标题】:\SplfileInfo objects with laravel storage disks带有 laravel 存储磁盘的 \SplfileInfo 对象
【发布时间】:2017-01-10 20:44:26
【问题描述】:

有没有办法使用 laravel 存储磁盘获取 splfileinfo 类型的对象?我需要一种将包装文件(存储在本地或 s3 服务上)的实例发送到AnalyzeImageService 的通用方法。

我认为 splfileinfo 的瞬间会很棒,因为它具有我的服务所需的所有方法(getSize 等)。

问题:如何从 laravel 获得一个包装文件的 \splfileinfo 对象。

【问题讨论】:

    标签: laravel flysystem


    【解决方案1】:

    你好用户2373229,

    为了设置自定义文件系统,您需要创建一个服务提供者。在 provider 的 boot 方法中,可以使用 Storage 门面的 extend 方法来定义自定义驱动。

    <?php
    
    namespace App\Providers;
    
    use Storage;
    use \SplFileInfo as SplFileInfo;
    use Illuminate\Support\ServiceProvider;
    
    
    class SplFileInfoServiceProvider extends ServiceProvider
    {
    /**
     * Perform post-registration booting of services.
     *
     * @return void
     */
    public function boot()
    {
        Storage::extend('splfileinfo', function () {
    
           return new SplFileInfo;
        });
    }
    
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        //
    }
    }
    

    一旦你创建了服务提供者来注册扩展,你可以在你的 config/filesystems.php 配置文件中使用 splfileinfo 驱动。

    您可以参考文档:https://laravel.com/docs/5.3/filesystem#custom-filesystems

    【讨论】:

    • 你如何为类似于\Storage::disk($disk)-&gt;allFiles($path) 的目录中的所有文件获取SplFileInfo 实例的集合(除了返回的集合类型为SplFileInfo,ofc)?
    猜你喜欢
    • 2017-02-11
    • 2017-06-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2016-12-25
    • 2021-04-07
    相关资源
    最近更新 更多