sowrensen/wormhole

Laravel应用程序的即插即用文件上传器。

v2.1.2 2021-02-21 14:53 UTC

This package is auto-updated.

Last update: 2024-09-21 22:52:10 UTC


README

Laravel应用程序的即插即用文件上传器。

Wormhole 是一个针对 Laravel 应用的包,它提供了一些方法,可以用来上传文件并将它们存储到服务器上的不同位置。不要误会,Laravel 本身就提供了上传文件的非常方便的方式,而这个包在底层只是使用了 Laravel 的 Storage 类。区别在于,这里提供的方法可以用于多种用途。我发现自己总是在所有的项目中复制粘贴相同的代码,所以我想把这些方法放在一个包里。没什么特别的!

另外,还包含一个带有进度条的 Vue 组件,可以显示文件上传进度,并提供可配置的前端验证,可以发布给需要的人。

安装

要安装这个包,请运行

composer require sowrensen/wormhole

用法

这个包提供了三种方法。

1. saveFile

使用此方法来存储任何二进制文件。它接受一个必需参数和两个可选参数。操作成功后,将返回一个自动生成的文件名,您应该存储此文件名以供将来使用。

返回

自动生成的文件名。

示例
 $filename = \Wormhole::saveFile($request->file('avatar'), 'avatars', 'public');

2. saveBase64File

使用此方法来存储任何 Base64 编码的文件。当您在 canvas 中调整图像大小并裁剪后上传图像时,Base64 编码的文件的一个示例用例。第二个和第三个参数与 saveFile 方法相同。操作成功后,将返回一个自动生成的文件名,您应该存储此文件名以供将来使用。

返回

自动生成的文件名。

示例
 $filename = \Wormhole::saveBase64File($request->input('avatar'), 'avatars', 'public');

3. deleteFile

此方法接受一个必需参数和一个可选参数。

返回

根据操作状态返回 truefalse

示例
 \Wormhole::deleteFile('eJd5m08f_1597305889.png', 'avatars', 'public');

Vue 组件

此包提供了一个 Vue 组件,可以用于上传大文件的交互式输入字段。该组件提供了两个预设,一个用于 Bootstrap,另一个用于 UIKit。Bootstrap 版本需要 jQuery 来工作,而 UIKit 版本需要 uikit 库。然而,这些都是完全非必需的。要使用此组件,请运行以下命令发布资源:

php artisan wormhole:publish uikit // or, bootstrap

FileUploader.vue 文件将被放置在您的 Laravel 应用程序的 resources/js/components 目录中。您必须在 app.js 文件中导入此组件。之后,您可以在 blade 文件或其他 Vue 组件中使用它。

<file-uploader
  url="{{ route('files.upload') }}"
  input-label="Attachment"
  input-placeholder="Select a file..."
  :supported-formats="['pdf', 'doc', 'docx']"
  :max-size="10"
  field-name="attachment"
  :wait="10"
>
</file-uploader>

Vue 组件有七个 props,其中只有一个必须指定。

示例

UIKit 组件

Bootstrap 组件