有没有办法可以使用laravel存储磁盘获取splfileinfo类型的对象?我需要一种通用的方法来发送一个包装文件(存储在本地或s3服务上)的实例到AnalyzeImageService
。
我认为splfileinfo的瞬间会很棒,因为它拥有我的服务所需的所有方法(getSize等)。
问题:如何从laravel获取一个包含磁盘文件的\ splfileinfo对象。
答案 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