基于Laravel的简单易用的文件上传器

1.3.1 2023-01-01 13:04 UTC

This package is auto-updated.

Last update: 2024-09-29 16:49:02 UTC


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 上关注我。

我鼓励大家贡献力量,即使是在文档中。谢谢,并真心希望您觉得这个包很有用。