Laravel 图片,媒体文件管理扩展包推荐

目前可用的媒体文件管理扩展包有两个:

  1. 大家所熟知的 spatie 团队开发的 laravel-medialibrary
  2. 和另外一个 来自 Plank Design 团队的 laravel-mediable

作为一个两个包的使用过的人现在本文中对两个包做一个简单的对比,方便大家决定项目中使用哪个包,以及避免踩一些我已经踩过的坑。

star 数

laravel-medialibrary 3060
laravel-mediable 424

很明显 laravel-medialibrary 的star 要远高于 laravel-mediable (毕竟 spatie 的知名度更高)

文档

两个包都有详细的文档页面,相信你也跟我一样对有独立文档页面的开源项目更有好感(相较于github Readme)
https://docs.spatie.be/laravel-medialibrar...

http://laravel-mediable.readthedocs.io/en/...

功能

两个包的基本功能都差不多,基本的图片管理相关操作都有。下面说下不同点:

  • 图片处理:laravel-medialibrary 集成了图片处理相关的功能。 laravel-mediable
  • 图片上传:laravel-medialibrary 无。 laravel-mediable 集成了图片上传功能,可指定文件类型限制,文件名,磁盘等等一系列设置。
  • 关联关系处理 :laravel-medialibrary 的媒体文件表只有一张表,处理关联关系相对不是很方便,官方也没提供同步媒体文件的方法,需要自己写。 laravel-mediable 的表设计多了一张中间表,处理关联关系相对更方便,提供的相关操作方法也更全面。

使用体验

重点来了,作为一个两个包都使用过的人,以下是我的经验和吐槽:

  1. 如果需要的仅仅是一个媒体文件管理扩展包, laravel-medialibrary 集成的图片处理功能对我完全没用,平白增加了包的复杂性(和性能下降?)。如果需要做图片处理的话完全可以自己再引入额外的图片处理包,个人对于包的看法是一个包做好一件事就可以了。
  2. laravel-medialibrary 没有考虑先上传后关联的场景,包使用方法里上传和关联是需要同时进行的,这点就很不符合实际应用,官方说是要支持,但是很久都没有更新了 相关issue,毕竟 spatie 这个团队维护的包太多了,可能有点顾不过来。
  3. laravel-medialibrary 的表设计个人感觉有些问题,没有设计中间表,导致很多操作处理起来很麻烦,不合理。例如删除图片数据,删除图片文件,删除数据关联,这些操作无法更细化。

最后

没错,这篇文章是带有很大偏向性的,做为一个在 laravel-medialibrary 这个包上踩了 N 多个坑后发现了 laravel-mediable 这个包感觉就像是发现了新大陆。很多之前的问题,都需要自己额外写很多方法去解决,有些问题都无法解决,换了包后这些问题都不存在了。如果你也准备在项目中使用开源的媒体文件管理扩展包,我强烈建议你使用 laravel-mediable

PS:文章没法详细对比两个包的异同,也没法完全列举我遇到过的种种坑(眨眼暗示),在使用之前建议打开两个包的文档,自行去详细对比下相关的功能,找到适合自己项目的才是最好的。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

两个都看了,第一个确实有点臃肿,第二个更简洁,表关系也更符合逻辑,不过有的地方还是不满意,就打算自己写了,反正多对多的多态模型关联、文件处理在laravel里都很方便,谢谢楼主推荐。

4年前 评论

上传文件自动吧中文换成拼音了,我如何不转拼音继续使用中文

5个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!