首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 5.0 之云存储驱动

. ---- 在 Laravel 5.0 版本中, FileSystem 类不再只是与本地文件系统进行交互, 而是可以用于 S3 和 Rackspace 的存储 API, 但使用方法很简单....$filename, $thing); } 在 Laravel 5.0 中, 可以随时通过修改生产环境下的应用配置文件, 无缝切换到外部的云存储服务(目前仅支持 S3 和 Rackspace, 本文以...这样你可以给任何特定的环境都指定默认的本地配置及默认的云存储配置. 假如使用 facade 的话, 默认会返回 default 默认值, 不是 cloud 默认值....如果在 controllers 之外的任何地方进行文件读写, 记得注入 Filesystem Contract(Illuminate\Contracts\Filesystem\Filesystem), 不是以前的...Jeffrey Way 演示了如何在代码中不是配置文件中指定要注入 Filesystem 工厂使用的驱动, 但我并没有详细了解这个技巧.

1.2K50

3分钟短文:用Laravel的方式管理服务器的文件们

laravel提供的Storage文档存储管理正式因此产生的,本期我们就来说一说。 代码时间 首先在配置文件内声明各个磁盘配置,可以设置驱动,配置目录等差异化信息。...覆盖性写入一个文件,或者创建一个新的不存在的文件,使用 put 方式: Storage::disk('local')->put('file.jpg', $contentsOrStream) 或者把上传的文件...还有常用的判断文件是否存在: Storage::exists('file.jpg') 避免了我们写 file_exists 这样还有传入绝对路径,或者相对路径的麻烦,使用对象方法操作,使得代码风格更为统一...如果我们引入了一个第三方的文件存储服务,且有其一套API操作方式,laravel系统并未提供该服务的驱动,能否自定义一套呢?完全可以。...写在最后 本文初步介绍了laravel中是如何使用Storage对象无差别地执行文件操作,用户只需关注文件操作逻辑,不用在意底层的驱动方式,这样非常便于统一化。最后简介了引入自定义文件驱动的方法。

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel5.2之Filesystem源码解析(下)

Relative Path:这个相对路径概念就比较简单了,就是每一个文件的路径是相对路径,如AWS S3中如果指向一个名叫file.txt的文件路径,可以这么定义Storage::disk('s3')-...>get('2016-09-09/daily/file.txt')就可以了,这里2016-09-09/daily/file.txt是相对于存储bucket的相对路径(bucket在AWS S3中称为桶的意思...,就是可以定义多个bucket,不同的bucket存各自的文件,互不干扰,在Laravel配置S3时得指定是哪个bucket,这里假设file.txt存储laravel bucket中),尽管其实际路径为类似这样的...指定一个文件时,需要给出相对路径,如2016-09-09/daily/file.txt,但不是file.txt,这个指定无意义。...\League\Flysystem\Filesystem源码解析 Filesystem这个类的源码主要就是文件的CRUD操作和文件属性的setter/getter操作,具体的操作是通过每一个Adapter

1.5K41

【译】深入研究 Laravel 的依赖注入容器

例如,Laravel使用它来确保无论什么时候将单实例Container实例注入到类中都会返回它: $container->instance(Container::class, $container);...任意绑定名称 你可以使用任意字符串不是使用一个 类/接口名称,尽管你不能使用类型提示检索它,但必须使用 make()代替: $container->bind('database', MySQLDatabase...你也可以使用容器来存储任意值,例如配置数据: $container->instance('database.name', 'testdb'); $db_name = $container->make...你可以使用接口或任意名称不是具体类。...::class) ->needs(Filesystem::class) ->give('s3'); 将参数绑定到原函数 你也可以通过传递变量名称给 needs()(不是接口)和传递变量给

4.6K70

PHP-web框架Laravel-缓存(二)

三、缓存驱动程序Laravel框架的缓存服务提供了多种缓存驱动程序,可以满足不同的需求。我们可以在config/cache.php配置文件中配置使用哪种缓存驱动程序。...下面是Laravel框架支持的缓存驱动程序列表:array:将数据存储在数组中,通常用于测试;file:将数据存储在文件中,可以使用本地文件系统或云存储服务(例如Amazon S3);database:...将数据存储在关系型数据库redis:将数据存储在Redis缓存服务器中;memcached:将数据存储在Memcached缓存服务器中。...$cache->put('data', $data, 60 * 60); } return view('example', ['data' => $data]); }...我们使用get方法从Redis缓存服务器中读取数据,如果数据不存在,则从数据库中读取数据,并使用put方法将数据存储到Redis缓存服务器中。

38821

Laravel 5.0 发布, 海量新特性!!

当然, 如果你需要的是 Phalcon 那样的性能, 那它肯定不是你需要的. 如果你是因为虚拟主机不支持 php 5.4 不能享受 Laravel, 那你还不扔了你的虚拟主机???...Laravel 5.0 Laravel 5.0 引入了全新的项目目录结构. 新的目录结构更有利于用 Laravel 来创建应用. 5.0 版从头到尾都采用了新的 PSR-4 自动加载标准....事件对象 在新版本中, 你可以把事件定义成对象不是字符串....通过这个库, 开发者可以轻易上手, 使用完全一致的 API 来实现本地, Amazon S3 或者 Rackspace 进行文件存储....比如, 在 Amazon S3 存储一个文件, 可以简单到这样: Storage::put('file.txt', 'contents'); 了解有关 Laravel Flysystem 集成的更多细节

4.1K60

你可能会踩到的一个 Eloquent 小坑

今天在写一个模型版本控制的需求,目标就是模型有字段变化时创建版本记录,首先想到的肯定是用我之前写过的一个包:overtrue/laravel-versionable,原理很简单: 监听模型事件,当检测到属性值变化时...,选择已快照或者差异化获取变化的内容,存储到一个版本记录表当中 Eloquent 模型事件 模型事件相信大家都非常熟练了,一句话介绍就是:当模型有各种变化时,Laravel 会触发对应的事件通知,目前支持的事件有...所以有了事件通知就可以做很多事情了,我的这个包做了一个功能,模型可以自己动态决定是否要为当前变更创建版本,只需要在模型里重载一个方法返回布尔值即可: public function shouldVersioning...(){ return true;} 掉坑里了 我们的需求是只有当 document_id 有修改的时候才创建版本,心想那还不简单,Model 不是有一个 getChanges 方法吗: public...当我翻到源码的时候眼泪掉下来: getChanges 只在 Model::performUpdate() 这个方法时才会从 getDirty() 拷贝内容, getDirty() 的结果是只要赋值(fill

47820

Laravel 中创建 Zip 压缩文件并提供下载的实现方法

事实上,这不是关于 Laravel 的,而是和 PHP 的关联更多,我们准备使用从 PHP 5.2 以来就存在的 ZipArchive 类 ,如果要使用,需要确保php.ini 中的 ext-zip 扩展开启...任务 1: 存储用户的发票文件到 storage/invoices/aaa001.pdf 下面是代码展示: $zip_file = 'invoices.zip'; // 要下载的压缩包的名称 // 初始化...// 所以,它将在 ZIP 中创建另一个名为 "storage/" 的路径,并把文件放入目录。...$zip- addFile(storage_path($invoice_file), $invoice_file); $zip- close(); // 我们将会在文件下载后立刻把文件返回原样 return...stream); //这里注意获取到的文本编码 $name = iconv("utf-8", "gb2312//IGNORE", $key); file_put_contents

3.2K52

Laravel 5.8 新特性系列 —— 缓存有效期单位调整

Laravel 5.8 开始,传递到缓存驱动的表示缓存有效期(TTL)的整型数据单位将会从分钟调整为秒,秒级缓存会使得开发者得以对缓存周期进行更加细粒度的控制,并且符合 PSR-16 标准: The...从 Laravel 5.0 到当前的稳定版本 Laravel 5.7,当你传整数到缓存存储 操作,例如 put() 和 remember(),持续时间都以分钟表示: Cache::remember('active-posts...', 5, function () { return Post::active()->get(); }); 为了简化从早期版本(5.5或更高版本)到 Laravel 5.8 的升级路径,你还可以传递一个...DateTimeInterface 或者 DateInterval 对象到 Cache::put() 方法,不必将所有调用处的数据单位转化为秒,通过这种方式调用的另一个好处是可以对缓存时间有更加清晰和多维的控制...now()->addMinutes(5), function () { return Post::active()->get(); }); 您可以看到 Dries Vints 为即将推出的 Laravel

1.1K10

Laravel 表单方法伪造与 CSRF 攻击防护

这个方法会请求服务器返回该资源所支持的所有 HTTP 请求方法,该方法会用'*'来代替资源名称,向服务器发送 OPTIONS 请求,可以测试服务器功能是否正常。...GET:请求指定的页面信息,并返回响应实体。一般来说 GET 方法应该只用于数据的读取,不应当用于会产生副作用的非幂等的操作中。...二者有以下两点不同:1、PATCH 一般用于资源的部分更新, PUT 一般用于资源的整体更新;2、当资源不存在时,PATCH 会创建一个新的资源, PUT 只会对已在资源进行更新。...会将其看作是 DELETE 请求,并将其匹配到对应的 Route::delete 路由进行处理,不是 Route::post 路由。...当然,如果你是在 JavaScript 脚本中执行 HTTP 请求,也可以很方便的传递这个 Token 值执行写入操作,首先需要在 HTML 标签内新增一个 元素来存储 Token

8.7K40

深入剖析 Laravel 服务容器

和我前面说的一样,本文不是一篇讲解依赖注入的文章,所以更多的细节需要大家自行去学习我之前列出的参考资料。...在创建 APP 容器主要会完成:注册应用的基础路径并将路径绑定到 APP 容器 、注册基础服务提供者至 APP 容器 、注册核心容器别名至 APP 容器 等基础服务的注册工作。...如果我们通过「Laravel 服务容器」绑定来管理依赖的话: <?...'); }); 在项目中常会用到存储功能,得益于 Laravel 内置集成了 FlySystem 的 Filesystem 接口,我们很容易实现多种存储服务的项目。...function () { return Storage::disk('local'); } 当用户上传视频 VideoController::class,需要使用存储服务(Filesystem

8.9K10
领券