thibedev/laravel-dropzone-chunk

Laravel 9 服务,可轻松处理分块上传(开箱即用的dropzone)

1.0.0 2022-03-06 09:42 UTC

This package is auto-updated.

Last update: 2024-09-07 17:22:56 UTC


README

这是一个简单的Laravel包,可以帮助处理dropzone.js的请求。它可以通过少量的配置选项适应其他前端库。

此包仅适用于Laravel 9。

安装

1. 通过composer安装

composer require thibedev/laravel-dropzone-chunk

2. 发布配置(可选)

php artisan vendor:publish --provider="ThibeDev\DropzoneChunk\Providers\DropzoneChunkServiceProvider"

使用方法

安装后,您可以使用提供的Facade:ChunkService。如果您使用dropzone和本地存储,可以使用此库而无需任何配置。它非常简单,就像这样做

$result = ChunkService::process($request);

所有分块上传完成后,$result将是一个包含上传文件名称和路径的数组。

您可以为ChunkService::process()方法提供3个额外的参数

  • 请求输入文件的名称,默认值为'file'
  • 您想保存上传文件的路径,默认值为'/temp'
  • 一个布尔值,表示是否保留原始文件名,默认值为false
$result = ChunkService::process($request, 'mySpecialInputName', '/public/media/', true);

如果您想使用除了dropzone之外的另一个前端提供商,可以发布配置并更改request_template键,或者可以使用环境变量。uuid应该是唯一的ID,chunkindex是实际的块索引,totalchunkcount是总块数。相当简单:)

'request_template' => [
        'uuid' => env('DROPZONE_CHUNK_UUID', 'dzuuid'),
        'chunkindex' => env('DROPZONE_CHUNK_UUID', 'dzchunkindex'),
        'totalchunkcount' => env('DROPZONE_CHUNK_TOTAL_CHUNKCOUNT', 'dztotalchunkcount'),
    ],

关于存储磁盘,我还没有在s3或ftp上尝试,但它应该可以工作,如果它对您有用,请告诉我!

默认情况下,它将使用本地存储,创建一个临时目录,将所有块以.part扩展名保存,最后在临时目录中以uuid为名称和原始文件扩展名合并所有块。您可以使用配置文件或环境变量更改临时目录名称、块扩展名和导出磁盘。

此存储库的examples目录中有两个示例。

我知道这不是最好的库,它可能有很多改进的空间,但它确实完成了工作,我没有找到其他与Laravel 9兼容的库...