aminkt / yii2-upload-manager
Upload manager system based and inspired from Wordpress upload manager.
Installs: 396
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- faravaghi/yii2-jalali-datepicker: dev-master
- perminder-klair/yii2-dropzone: dev-master
- yiisoft/yii2: *
- yiisoft/yii2-imagine: ~2.0.0
This package is auto-updated.
Last update: 2024-11-03 21:47:50 UTC
README
Yii2 Upload manage module.
To install this module add "aminkt/yii2-upload-anager" : ">=1.2.0"
in your composer.json
in your project.
Then add flowing lines into your application config:
'upload-manager' => [ 'class' => aminkt\uploadManager\UploadManager::class, 'uploadPath'=>Yii::getAlias("@frontendWeb")."/upload", 'uploadUrl'=> "/upload", 'baseUrl' => 'http://localhost:800', 'acceptedFiles'=>"*", 'userClass' => 'user/class/namespcae', 'fileClass' => 'file/class/namespcae', // Don't set this to use default active record. 'fileSearchClass' => 'file/search/class/namespcae', // Don't set this to use default search active record. ],
Then run below code to migrate up your modules:
Run migration if you are using defualt module models.
php yii migrate --migrationPath="@vendor/aminkt/yii2-upload-manager"
If you want to edit your files, open
['uploadManager/default/index']
in your browser.
How use upload manager widget?
Add flowing lines into your view file to load upload manager widget:
<?php echo \aminkt\uploadManager\components\UploadManager::widget([ 'id'=>'upload-user-pic-'.$model->id, 'model'=>$model, 'attribute'=>'picture', 'titleTxt'=>'تصویر ربات را کنید.', 'helpBlockEnable'=>false, 'showImageContainer'=>'#avatar-'.$model->id, 'showImagesTemplate'=>"<img src='{url}' class='img-responsive'>", 'btnTxt'=>'<i class="fa fa-edit"></i>' ]); echo Html::hiddenInput('target', $model->id, ['class'=>'target']); ?> <div id="avatar-<?= $model->id ?>"></div>
Use Upload manager api to upload and fetch files
First add flowing routes to your api url manager:
[ 'class' => 'yii\rest\UrlRule', 'pluralize' => false, 'controller' => ['v2/upload' => 'uploadManager/v1/upload'], 'extraPatterns' => [ 'GET load/<id:\d+>' => 'load', ] ],
Top code means that use uploadManager api version 1 from v2/upload route. Flowing routes now available:
GET /v2/upload // List of all files that user uploaded.
GET /v2/upload/[id] // Detail of one single file.
GET /v2/upload/load/[id] // Return file content of one single file by id
DELETE /v2/upload/[id] // Delete a single file from server.
POST /v2/upload // Upload a new file.
Notice:
- All request except load and view shoud use at least one auth method to authrize user.
- In upload route don't set content-type in header but in others you can.
- In upload route send file as post, file multi part and file name is better to be 'file'
Warning: Cross origin is enabled by default. if you have any problem with this please report it.
Advanced configuration
If you want implement your own models or search model or you wnat use Mongo db database you should flow below instractions.
- Create your models.
- Implement
\aminkt\uploadManager\interfaces\FileInterface
- If you want use default File constant implement
\aminkt\uploadManager\interfaces\FileConstantsInterface
or not create your own constants named like defined interface. - Config you module like said in first part and define
fileClass
andfileSearchClass
- You can use
\aminkt\uploadManager\traits\FileTrait
to implement some regular methods that defined inFileInterface
If you wnat use mongodb active record you can just change
fileClass
andfileSearchClass
discribed in configuration part to use mongodb version as\aminkt\uploadManager\models\mongo\File
and\aminkt\uploadManager\models\mongo\FileSearch