FileUpload
, (*1)
Process uploaded files with multiple and extensible validation rules., (*2)
Installation
Install via composer, (*3)
$ composer require slince/upload
Quick view
$builder = new Slince\Upload\UploadHandlerBuilder(); //create a builder.
$handler = $builder
->saveTo(__DIR__ . '/dst')
->getHandler();
$files = $handler->handle();
print_r($files);
Usage
Assume files are uploaded with this HTML form:, (*4)
<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>
Server:, (*5)
$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 metadata $file->getMetadata('metadata name')
is provided by storage layer.
if you are using Local
, the file has a metadata named 'spl_file', it is an instance of SplFileInfo
., (*6)
If you want access attributes of the file saved in the client, you can use like this., (*7)
$files['foo']->getUploadedFile()->getClientOriginalName(); // original name
$files['bar']['baz'][0]->getUploadedFile()->getClientOriginalExtension(); // original extension
$files['bar']['baz'][1]->getUploadedFile()->getClientMimeType(); // original mime type
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);
All files will be automatically uploaded to AWS S3., (*8)
License
The MIT license. See MIT, (*9)