dot/doris/yii2-upload-file

基于BS4的文件上传小部件

安装: 64

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 1

类型:yii2-extension

v1.0.0 2022-02-15 10:57 UTC

This package is not auto-updated.

Last update: 2024-09-25 02:09:07 UTC


README

文件上传小部件

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

composer require doris/yii2-upload-file 'dev-master'

或者

"doris/yii2-upload-file": "dev-master"

将以下内容添加到你的 composer.json 文件的 require 部分中。

yii2-upload-file

必需参数

model - required ( object - \yii\db\ActiveRecord )
form  - required ( object - \yii\widgets\ActiveForm )
uploadType - required (allow types are - Uploader::UPLOAD_TYPE_IMAGE | Uploader::UPLOAD_TYPE_VIDEO | Uploader::UPLOAD_TYPE_FILE | Uploader::UPLOAD_TYPE_AUDIO )
language - required ( allow languages are - en-US | ru-RU | uk-UA )
attributes - required (array, attribute - needs for saving file name to db and validate (in model rules), tempAttribute needs for transfer uploaded file from asociative array $_FILES, it is public property in your model)
uploadPath - required (type string)  

附加属性

moduleName - not required, if you use basic version Yii2 you must set muduleName (it is name of you admin module, you may find it in your config file).  
urlOptions - not required (by default uploadUrl => upload-file, deleteUrl => delete-file), you may set your custom urls and determine them in your controller 
options => [
    1) multiple - by default false,
    2) uploadMineType - depends on param uploadType, if this option will not be specified upload file widget automaticaly determine uploadMineType.
         You may set another mineTypes using doris\uploadFile\helpers\UploadHelper. 
         There where some methods fo set mine types: 
          - UploadHelper::uploadMineTypeForImages()
          - UploadHelper::uploadMineTypeForVideo()
          - UploadHelper::uploadMineTypeForAudio()
         Or set your custom mine type in string format
    3) maxFileSize - this property indicated in the format integer or double, by default 3 MB (example 3, 0.2 ....)      
    4) resize - [
        'resizeWidth' => 450,
        'resizeHeight' => 450,
    ]
        Proportional resize by width and height - only for 'uploadType' => Uploader::UPLOAD_TYPE_IMAGE
        If resize option was specified you must identify resizeWidth and resizeHeight, they wiil be required.         
    5) fileMineType => FileUploader::MINE_TYPE_PDF | FileUploader::MINE_TYPE_EXCEL | FileUploader::MINE_TYPE_DOCUMENT
        This property works with uploadType => Uploader::UPLOAD_TYPE_FILE, by default have fileMineType value FileUploader::MINE_TYPE_PDF 
]
templateOptions => [
    1) uploadLimitWindow - show bootstrap alert window with resize information, by default true.
     Depends on resize option, if resize option was not specified uploadLimitWindow param will have false value. 
    2) bootstrapOuterWrapClasses -  by default col-xs-12 col-sm-12 col-md-12 col-lg-12, you may set your custom classes.
    2) bootstrapInnerWrapClasses -  by default col-xs-12 col-sm-12 col-md-12 col-lg-12, you may set your custom classes.
] 

注意:你必须在 params.php 中设置域名(例如 'domain' => 'http://example.domain'), 以稳定生成预览路径。

注意:如果你使用的是基础版本的Yii2,你必须设置 moduleName 选项,以稳定生成默认处理动作的URL。

用法

Once the extension is installed, simply use it in your code by  :

##控制器

<?php
use yii\helpers\ArrayHelper;
use doris\uploadFile\actions\UploadFileAction;
use doris\uploadFile\actions\DeleteFileAction;

class PostController extends \yii\web\Controller
{
   public function actions()
    {
        return ArrayHelper::merge(parent::actions(),[
                'upload-file' => ['class' => UploadFileAction::class], //action for uploading file                   
                'delete-file' => ['class' => DeleteFileAction::class], //action for deleting file
            ]);
        }
}
?>

视图

上传图片示例

<?php
use doris\uploadFile\components\Uploader;
use doris\uploadFile\UploadFileWidget;
?>

<?=  UploadFileWidget::widget([ 
    'model' => $model,
    'form' => $form,
    'uploadType' => Uploader::UPLOAD_TYPE_IMAGE,
    'language' => 'en-US',
    'uploadPath' => 'image/prev',
    'attributes' => [
        'attribute' => 'image',
        'tempAttribute' => 'tempUploadImage',
    ],
    'options' => [        
        'maxFileSize' => 2,
        'resize' => [
            'resizeWidth' => 450,
            'resizeHeight' => 450,
        ],
    ],
    'templateOptions' => [
        'uploadLimitWindow' => true,
        'bootstrapOuterWrapClasses' => 'col-xs-12 col-sm-12 col-md-6 col-lg-12',
        'bootstrapInnerWrapClasses' => 'col-xs-6 col-sm-6 col-md-6 col-lg-12'
    ]
])?>    

上传视频示例

<?php
use doris\uploadFile\components\Uploader;
use doris\uploadFile\UploadFileWidget;
?>

<?=  UploadFileWidget::widget([ 
    'model' => $model,
    'form' => $form,
    'uploadType' => Uploader::UPLOAD_TYPE_VIDEO,
    'language' => 'en-US',
    'uploadPath' => 'video/video-folder',
    'attributes' => [
        'attribute' => 'video',
        'tempAttribute' => 'tempUploadVideo',
    ],
    'options' => [       
        'maxFileSize' => 2,
    ],
    'templateOptions' => [      
        'bootstrapOuterWrapClasses' => 'col-xs-12 col-sm-12 col-md-6 col-lg-12',
        'bootstrapInnerWrapClasses' => 'col-xs-6 col-sm-6 col-md-6 col-lg-12'
    ]
])?>     

上传文件示例

<?php
use doris\uploadFile\components\Uploader;
use doris\uploadFile\UploadFileWidget;
use doris\uploadFile\components\FileUploader;
?>

<?=  UploadFileWidget::widget([ 
    'model' => $model,
    'form' => $form,
    'uploadType' => Uploader::UPLOAD_TYPE_FILE,
    'language' => 'en-US',
    'uploadPath' => 'files/file-folder',
    'attributes' => [
        'attribute' => 'file',
        'tempAttribute' => 'tempUploadFile',
    ],
    'options' => [
        'fileMineType' => FileUploader::MINE_TYPE_DOCUMENT,//FileUploader::MINE_TYPE_DOCUMENT | FileUploader::MINE_TYPE_EXCEL | FileUploader::MINE_TYPE_PDF
        'maxFileSize' => 25,
    ],
    'templateOptions' => [      
        'bootstrapOuterWrapClasses' => 'col-xs-12 col-sm-12 col-md-6 col-lg-12',
        'bootstrapInnerWrapClasses' => 'col-xs-6 col-sm-6 col-md-6 col-lg-12'
    ]
])?>     

上传音频文件示例

<?php
use doris\uploadFile\components\Uploader;
use doris\uploadFile\UploadFileWidget;
?>

<?=  UploadFileWidget::widget([ 
    'model' => $model,
    'form' => $form,
    'uploadType' => Uploader::UPLOAD_TYPE_AUDIO,
    'language' => 'en-US',
    'uploadPath' => 'audio/audio-folder',
    'attributes' => [
        'attribute' => 'file',
        'tempAttribute' => 'tempUploadFile',
    ],
    'options' => [        
        'maxFileSize' => 25,
    ],
    'templateOptions' => [      
        'bootstrapOuterWrapClasses' => 'col-xs-12 col-sm-12 col-md-6 col-lg-12',
        'bootstrapInnerWrapClasses' => 'col-xs-6 col-sm-6 col-md-6 col-lg-12'
    ]
])?>