mheads / yii2-filestorage
文件存储
1.0.6
2023-02-09 10:01 UTC
Requires
- imagine/imagine: ^1.3
- yiisoft/yii2: ~2.0.0
README
基本配置
将迁移添加到您的应用程序中,编辑控制台配置文件以设置命名空间迁移
'controllerMap' => [ // ... 'migrate' => [ 'class' => 'yii\console\controllers\MigrateController', 'migrationPath' => null, 'migrationNamespaces' => [ // ... 'mheads\filestorage\migrations', ], ], ],
应用程序基本配置
const MHEADS_FILE_STORAGE_COMPONENT_NAME = 'fileStorage'; $config = [ //... 'components' => [ //... MHEADS_FILE_STORAGE_COMPONENT_NAME => [ 'class' => \mheads\filestorage\Storage::class, 'stores' => [ 'upload' => [ 'class' => \mheads\filestorage\stores\fileSystem\FileSystemStore::class, 'baseUrl' => '/upload', 'basePath' => __DIR__.'/../../upload', 'basePrivatePath' => __DIR__.'/../../private_upload', 'isHttps' => true, 'host' => 'static.example.com', ], ], 'defaultStoreName' => 'upload', 'strictRemove' => false, ], ] ];
基本使用
添加文件
$uploadedFile = \yii\web\UploadedFile::getInstanceByName('picture'); $file = \mheads\filestorage\File::create( $uploadedFile, 'product-pictures', ); $file->add();
获取文件
use mheads\filestorage\File; $file = File::find()->where([File::field_id => 123])->one(); $url = $file->getUrl(); $content = $file->getContent();
删除文件
use mheads\filestorage\File; $file = File::find()->where([File::field_id => 123])->one(); $file->remove();
通过行为集成到Active record
use mheads\filestorage\File; use mheads\filestorage\behaviors\FileUploadBehavior; use \yii\web\UploadedFile; /** * @property ?int $id * @property ?string $name * @property ?UploadedFile|int $picture_id */ class Product extends \yii\db\ActiveRecord { //...... public function setPicture(?UploadedFile $file): void { $this->setAttribute('picture_id', $file); } public function getPicture() { return $this->hasOne(File::class, [File::field_id => 'picture_id']); } public function behaviors(): array { return [ 'pictureUpload' => [ 'class' => FileUploadBehavior::class, 'attribute' => 'picture_id', 'isPrivate' => false, 'groupName' => 'product-pictures', ], ]; } //...... }
支持多个存储
配置
const MHEADS_FILE_STORAGE_COMPONENT_NAME = 'fileStorage'; $config = [ //... 'components' => [ //... MHEADS_FILE_STORAGE_COMPONENT_NAME => [ 'class' => \mheads\filestorage\Storage::class, 'stores' => [ 'upload' => [ 'class' => \mheads\filestorage\stores\fileSystem\FileSystemStore::class, 'baseUrl' => '/upload', 'basePath' => __DIR__.'/../../upload', 'basePrivatePath' => __DIR__.'/../../private_upload', 'isHttps' => true, 'host' => 'static.example.com', ], 'upload2' => [ 'class' => \mheads\filestorage\stores\fileSystem\FileSystemStore::class, 'baseUrl' => '/upload2', 'basePath' => '/media/store/data/upload', 'basePrivatePath' => '/media/store/data/private_upload', 'isHttps' => true, 'host' => 'static2.example.com', ], ], 'defaultStoreName' => 'upload', 'strictRemove' => false, ], ], ];
指定存储添加文件
$uploadedFile = \yii\web\UploadedFile::getInstanceByName('picture'); $file = \mheads\filestorage\File::create( $uploadedFile, 'product-pictures', 'upload2', // store name ); $file->add();
指定存储的Active Record行为
public function behaviors(): array { return [ 'pictureUpload' => [ 'class' => FileUploadBehavior::class, 'attribute' => 'picture_id', 'isPrivate' => false, 'groupName' => 'product-pictures', 'storeName' => 'upload2', // store name ], ]; }