Yii 2 File Upload
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π£Π΄ΠΎΠ±Π½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· composer., (*1)
ΠΠΈΠ±ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ, (*2)
php composer.phar require --prefer-dist mihaildev/yii2-file-upload "*"
ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, (*3)
"mihaildev/yii2-file-upload": "*"
Π² ΡΠ°Π·Π΄Π΅Π»Π΅ require
Π²Π°ΡΠ΅Π³ΠΎ composer.json ΡΠ°ΠΉΠ»Π°., (*4)
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Behavior Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ
public function behaviors()
{
return [
'file-upload' => [
'class' => FileUploadBehavior::className(),
/*
'replacePairs' => [
'<modelId>' => 'id',// Π΄Π°Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
],
*/
'attributes' => [
'file' =>[
//'handler' => FileUploadBehavior::HANDLER_FILE, // ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
'path' => '@webroot/files/<modelId>/<fileName>.<fileExtension>',
'url' => '@web/files/<modelId>/<fileName>.<fileExtension>',
],
'ava' => [
'handler' => FileUploadBehavior::HANDLER_IMAGE,
'path' => '@webroot/files/avatar/<modelId>/origin.<fileExtension>',
'url' => '@web/files/avatar/<modelId>/origin.<fileExtension>',
'imagine' => function($filename){
return Image::aligning($filename, 800, 800);
},
'saveOptions'=> ['quality' => 90],
'thumbs' => [
'icon' => [
'path' => '@webroot/files/avatar/<modelId>/icon.<fileExtension>',
'url' => '@web/files/avatar/<modelId>/icon.<fileExtension>',
'imagine' => function($filename){ return Image::thumbnail($filename, 50, 50);},
'saveOptions'=> ['quality' => 70],
],
'preview' => [
'path' => '@webroot/files/avatar/<modelId>/preview.<fileExtension>',
'url' => '@web/files/avatar/<modelId>/preview.<fileExtension>',
'imagine' => function($filename){ return Image::thumbnail($filename, 200, 200);},
'saveOptions'=> ['quality' => 90],
]
]
]
]
],
];
}
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅!!! Π°ΡΡΡΠΈΠ±ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ Π² Π±Π°Π·Π΅!, (*5)
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ https://github.com/yiisoft/yii2-imagine, (*6)
Π€ΡΠ½ΠΊΡΠΈ Image::aligning Π½Π΅ Π²Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ https://github.com/MihailDev/yii2-imagine, (*7)
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΡΠΈ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ $this->getUploadedFilePath($attributeName);
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ $this->getUploadedFileUrl($attributeName);, (*8)
ΠΠ»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
$this->getUploadedFilePath($attributeName); - ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
$this->getUploadedFilePath($attributeName, $thumbId); - ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΡΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, (*9)
$this->getUploadedFileUrl($attributeName); - ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
$this->getUploadedFileUrl($attributeName, $thumbId); - ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, (*10)
ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΡ
Π²ΡΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, (*11)
$this->getUploadedFilePath('file');
$this->getUploadedFileUrl('file');, (*12)
$this->getUploadedFilePath('ava');
$this->getUploadedFileUrl('ava');, (*13)
$this->getUploadedFilePath('ava', 'icon');
$this->getUploadedFileUrl('ava', 'icon');, (*14)
$this->getUploadedFilePath('ava', 'preview');
$this->getUploadedFileUrl('ava', 'preview');, (*15)
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°
Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ², (*16)
= $form->field($model, 'file')->widget(\mihaildev\fileupload\FileUploadWidget::className(),[
'fileUrl' => $model->getUploadedFileUrl('file'),
'fileName' => 'Π‘ΠΊΠ°ΡΠ°ΡΡ'
]
) ?>
Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, (*17)
= $form->field($model, 'ava')->widget(\mihaildev\fileupload\ImageUploadWidget::className(),[
'imageOptions' => ['width' => '200'],
'imageUrl' => $model->getUploadedFileUrl('ava', 'preview')
]
) ?>