Supports multiple filesystems:
- Yii2 Flysystem - Local, FTP, AWS S3, Azure filesystem etc.
- Aliyun OSS Flysystem
composer require razonyang/yii2-uploader
Configuration:
return [
'components' => [
'filesystem' => [
'class' => \creocoder\flysystem\LocalFilesystem::class,
'path' => '@webroot/resources',
],
'uploader' => [
'class' => \RazonYang\Yii2\Uploader\Uploader::class,
'host' => 'http://localhost/resources', // the hostname relative to your uploaded files
'filesystem' => 'filesystem',
],
],
];
And then defines a form, UploadForm
class UploadForm extends \yii\base\Model
{
use \RazonYang\Yii2\Uploader\UploadModelTrait;
public function handle()
{
if (!$this->validate()) {
// handles error
throw new \Exception('invalid file');
}
$url = $this->upload();
return [
'url' => $url,
// ... other information
];
}
}
class UploadController extends \yii\web\Controller
{
public function actionUpload()
{
$form = new UploadForm([
'file' => \yii\web\UploadedFile::getInstanceByName('file')
]);
return $form->handle();
}
}