具有laravel存储磁盘的SplfileInfo对象

时间:2016-09-02 16:54:14

标签: laravel flysystem

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

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

问题:如何从laravel获取一个包含磁盘文件的\ splfileinfo对象。

1 个答案:

答案 0 :(得分:0)

Hello user2373229,

要设置自定义文件系统,您需要创建服务提供程序。在提供程序的引导方法中,您可以使用Storage facade的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