prabowomurti/yii2-upload-file
Composer 安装命令:
composer require prabowomurti/yii2-upload-file
包简介
Yii2 upload file tools
README 文档
README
Yii2 tools for upload file
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require mdmsoft/yii2-upload-file "~2.0"
for dev-master
php composer.phar require mdmsoft/yii2-upload-file "dev-master"
or add
"mdmsoft/yii2-upload-file": "~2.0"
to the require section of your composer.json file.
Usage
Once the extension is installed. Prepare required table by execute yii migrate.
yii migrate --migrationPath=@mdm/upload/migrations
if wantn't use db migration. you can create required table manually.
CREATE TABLE uploaded_file ( "id" INT NOT NULL AUTO_INCREMENT, "name" VARCHAR(64), "filename" VARCHAR(256), "size" INT, "type" VARCHAR(32), PRIMARY KEY (id) );
Modify your application configuration as follows:
return [ ... 'controllerMap' => [ 'file' => 'mdm\\upload\\FileController', // use to show or download file ], ];
Then simply modify your Model class:
public function behaviors() { return [ ... [ 'class' => 'mdm\upload\UploadBehavior', 'attribute' => 'file', // required, use to receive input file 'savedAttribute' => 'file_id', // optional, use to link model with saved file. 'uploadPath' => '@common/upload', // saved directory. default to '@runtime/upload' 'autoSave' => true, // when true then uploaded file will be save before ActiveRecord::save() 'autoDelete' => true, // when true then uploaded file will deleted before ActiveRecord::delete() ], ]; }
You dont need add extra attribute file to model class. In controller
public function actionCreate() { if($model->load(Yii::$app->request->post()) && $model->save()){ ... } ... }
If you set mdm\upload\UploadBehavior::$autoSave to false you must call saveUploadedFile().
public function actionCreate() { if($model->load(Yii::$app->request->post()) && $model->validate()){ if($model->saveUploadedFile() !== false){ $model->save(false); .... } ... } ... }
In view file
// in create or update view <?= $form->field($model,'file')->fileInput(); ?> // in view <?= Html::img(['/file','id'=>$model->file_id]) ?> <!-- assume the uploaded file is image ->
Using Without Attach Behavior
Instead of using as behavior, you can also directly save file using FileModel.
public function actionCreate() { ... if($model->load(Yii::$app->request->post()) && $model->validate()){ $file = UploadedFile::getInstance($model, 'file'); if($fileModel = FileModel::saveAs($file,['uploadPath' => '@common/upload'])){ $model->fil_id = $fileModel->id; $model->save(); .... } ... } }
But, you need to add attribute file to Model.
class MyModel extend ... { public $file; // add this to your model class
- See my blog
统计信息
- 总下载量: 37
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2023-09-14