sirmekus / elu
基于Laravel的简单易用的文件上传器
Requires
- php: ^7.3|^8.0
- intervention/image: ^2.7|^3.0@alpha
Requires (Dev)
- illuminate/support: ^8.82|^9.0
README
Elu是一个由Laravel支持的文件上传器,它利用了Laravel强大的验证功能,为现有的Web应用增加了功能。其中一个额外的优点是强制(或约束)图像尺寸。例如,假设您的应用程序期望图像尺寸为300/300px(高度/宽度),并且用户上传了一个尺寸为500/200px的图像。严格约束尺寸(使用传统方法)可能会导致图像质量低且不太美观。这个库有效地处理了这个问题,同时没有牺牲上传图像的质量。
请注意,此包不仅限于图像上传;它处理任何类型的文件上传——PDF、DOC、音频、视频、图像等。
安装
要开始使用,您只需做以下操作
composer require sirmekus/elu
安装后,您可以发布包的 elu
配置文件,然后通过运行以下命令进行自定义
php artisan vendor:publish --provider="Laravel\Elu\EluServiceProvider"
请注意,此包将上传的文件/图像存储在
storage
文件夹中,并期望已经创建了符号链接。如果您还没有,没有问题。只需运行
php artisan storage:link
这就完成了。
在伊博语中,Elu的意思是 "向上";我敢打赌你现在知道这个名称与这个包的联系了...#眨眼。
用法
接收/接受客户端的文件/图像
示例
namespace App\Http\Controllers; use Laravel\Elu\Elu; class FileController extends Controller { public function upload(Elu $elu) { //file check and validation if you wish $image = $elu->upload(); } }
只需要这一行代码就可以使用此包。该包假定客户端传入的文件名为 image
。如果不是这样,您可以在第一个参数中指定名称。示例
<input type="file" accept="image/*" name='photo' />
namespace App\Http\Controllers; use Laravel\Elu\Elu; class FileController extends Controller { public function upload(Elu $elu) { //file check and validation if you wish $image = $elu->upload('photo'); } }
无论文件是数组还是单个文件,该包都会处理,将上传的文件存储在磁盘上,并返回新的文件名。如果检测到数组,则返回的值将是一个包含上传文件名的数组,否则是一个包含您希望存储在数据库中的文件的字符串。
您可以在运行时设置配置(如果您选择在任何时候都不使用配置设置)或覆盖类的公共属性。属性如下
-
docParentFolder
:这通常是存储文件夹中的公共目录。如果您希望文件保存在此目录之外,请在配置文件中指定它或覆盖此属性。 -
sub_folder
:在docParentFolder
文件夹中,如果有另一个文件夹您希望上传图像,可以在此处指定。您可以将它指定为类似于文件路径(subfolder/path/folder
)的路径,或者只指定单个条目(subfolder
)。 -
width
:此图像允许的宽度。 -
height
:此图像允许的高度。 -
valid_mimes
:此图像允许的MIME类型。 -
max_file_upload_size
:此图像允许的最大大小,以字节为单位。 -
max_no_of_file_to_upload
:此图像允许上传的最大文件数。如果您的用户可以上传多个图像,这将很有用。 -
name_of_file
:如果指定,将使用此特定名称而不是随机生成的名称来重命名文件。在多个文件上传的情况下,文件可能会被覆盖,所以在设置时要小心。
默认情况下,upload()
方法会检查指定的键是否存在于传入的请求中并且已填充。如果没有,它将抛出一个错误。在某些情况下,图像上传可能是可选的,因此应用程序仍然应该继续请求处理。为了启用此功能,该方法接受一个额外的参数来抑制错误。示例
namespace App\Http\Controllers; use Laravel\Elu\Elu; class FileController extends Controller { public function upload(Elu $elu) { //file check and validation if you wish $image = $elu->upload('photo', true); } }
或者,如果你使用的是 PHP 8.0 及以上版本,并且请求中的参数名称是 image
。
namespace App\Http\Controllers; use Laravel\Elu\Elu; class FileController extends Controller { public function upload(Elu $elu) { //file check and validation if you wish $image = $elu->upload(ignore:true); } }
显示图像
因为文件存储在存储目录中,并且已经创建了一个符号链接,你可以在你的 blade 文件中简单地这样做()
{{ asset('storage/'.$user->image)}}
或者,如果图像保存在子目录中(在 storage/public/ 中)
{{ asset('storage/sub_directory/'.$user->image)}}
删除图像/文件
要删除图像,它遵循与上传图像/文件相同的逻辑和配置。只需将图像/文件名(字符串或数组)传递给 remove()
方法即可完成任务。示例
namespace App\Http\Controllers; use Laravel\Elu\Elu; class FileController extends Controller { public function upload(Elu $elu) { //file check and validation if you wish $elu->remove($image); } }
同时
你可以在 LinkedIn 上与我联系,以获得有价值的建议,我们可以一起扩大我们的网络。
在 Webloit 上支持我们。
并在 Twitter 上关注我。
我鼓励大家贡献力量,即使是在文档中。谢谢,并真心希望您觉得这个包很有用。