sowrensen / wormhole
Laravel应用程序的即插即用文件上传器。
Requires
- php: >=7.0
- laravel/framework: >=5.6
Requires (Dev)
- orchestra/testbench: >=3.6
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
此方法接受一个必需参数和一个可选参数。
返回
根据操作状态返回 true
或 false
。
示例
\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,其中只有一个必须指定。