slince / upload
使用多级和可扩展的验证规则处理文件上传
3.1.0
2023-03-23 15:28 UTC
Requires
- php: >=8.1
- symfony/http-foundation: ^3.4|^4.0|^5.0|^6.0
- symfony/mime: ^3.4|^4.0|^5.0|^6.0
Requires (Dev)
- phpunit/phpunit: ^8.0|^9.0
Suggests
- league/flysystem: Integrate with flysystem
This package is auto-updated.
Last update: 2024-09-23 18:35:47 UTC
README
使用多个和可扩展的验证规则处理上传的文件。
安装
通过composer安装
$ composer require slince/upload
快速查看
$builder = new Slince\Upload\UploadHandlerBuilder(); //create a builder. $handler = $builder ->saveTo(__DIR__ . '/dst') ->getHandler(); $files = $handler->handle(); print_r($files);
使用方法
假设文件是通过以下HTML表单上传的
<form method="POST" enctype="multipart/form-data"> <input type="file" name="foo" value=""/> <input type="file" name="bar[baz][]" value=""/> <input type="file" name="bar[baz][]" value=""/> <input type="submit" value="Upload File"/> </form>
服务器
$builder = new Slince\Upload\UploadHandlerBuilder(); //create a builder. $handler = $builder ->overwrite(true) // open overwrite mode. //Custom namer ->naming(function (UploadedFile $file) { return date('Y/md') . '/' . uniqid() . '.' . $file->getClientOriginalExtension(); }) //add constraints ->sizeBetween('10m', '20m') ->allowExtensions(['jpg', 'txt']) ->allowMimeTypes(['image/*', 'text/plain']) ->saveTo(__DIR__ . '/dst') //save to local ->getHandler(); $files = $handler->handle(); foreach ($files as $file) { $uploadedFile = $file->getUploadedFile(); if ($file->isUploaded()) { echo $uploadedFile->getClientOriginalName() . ' upload ok, path:' . $file->getMetadata('spl_file')->getPathname(); } else { echo $uploadedFile->getClientOriginalName() . ' upload error: ' . $file->getException()->getMessage(); } echo PHP_EOL; }
文件元数据 $file->getMetadata('metadata name')
由存储层提供。如果你使用 Local
,文件有一个名为'spl_file'的元数据,它是一个 SplFileInfo
实例。
如果你想访问客户端中保存的文件属性,你可以这样使用。
$files['foo']->getUploadedFile()->getClientOriginalName(); // original name $files['bar']['baz'][0]->getUploadedFile()->getClientOriginalExtension(); // original extension $files['bar']['baz'][1]->getUploadedFile()->getClientMimeType(); // original mime type
与 flysystem 集成
function createS3Flysystem() { $client = new Aws\S3\S3Client([ 'credentials' => [ 'key' => 'your-key', 'secret' => 'your-secret' ], 'region' => 'your-region', 'version' => 'latest|version', ]); $adapter = new League\Flysystem\AwsS3v3\AwsS3Adapter($client, 'your-bucket-name'); $flysystem = new League\Flysystem\Filesystem($adapter); return $flysystem; } $builder = new Slince\Upload\UploadHandlerBuilder(); //create a builder. $handler = $builder->setFilesystem(new Slince\Upload\Filesystem\Flysystem(createS3Flysystem())) ->getHandler(); $files = $handler->handle(); print_r($files);
所有文件都将自动上传到AWS S3。
许可证
MIT许可证。见 MIT