prointix / yii2-prointix-upload
本扩展用于 PROINTIX 项目
v0.0.1
2024-03-16 09:21 UTC
Requires
- aws/aws-sdk-php: ^3.300
- yiisoft/yii2: ~2.0.0
README
本扩展用于 PROINTIX 项目
安装
安装此扩展的首选方法是通过 composer。
运行以下命令之一
php composer.phar require --prefer-dist prointix/yii2-prointix-upload "*"
或
"prointix/yii2-prointix-upload": "*"
将以下内容添加到您的 composer.json
文件的 require 部分。
将组件添加到 config/web.php
。您可以在 S3 和本地之间切换。用法相同。
'components' => [ // ... 'upload' => [ 'class' => 'prointix\uploads\S3Upload', 'clientConfig' => [ 'region' => 'ap-southeast-1', 'endpoint' => 'http://127.0.0.1:9000', // optional 'credentials' => [ 'key' => 'xxxxxxxxxxxxx', 'secret' => 'xxxxxxxxxxxxxxxxxxxxxx', ], ], 'defaultBucket' => 'test', 'defaultBaseUrl' => 'http://127.0.0.1:9000', // optional ], // or with local server 'upload' => [ 'class' => 'prointix\uploads\LocalUpload', 'baseUploadDir' => '/uploads', // optional. default folder: `/uploads` ], // ... ],
用法
扩展安装后,只需在您的代码中通过以下方式使用它:
基本用法
/** @var \prointix\uploads\UploadInterface */ $upload = Yii::$app->upload; // Store a file $file = UploadedFile::getInstance($model, 'imageFile'); $key = $upload->getGenerateKey($file, "test/"); // It don't required to use `getGenerateKey` function. It just helper. // You can pass you own path. Ex: test/folders/test.png $result = $upload->store($file, $key); // Store multiple files // The key will be auto generate. but you can custom folder. $files = UploadedFile::getInstances($model, 'imageFiles'); $result = $upload->stores($files, "/test"); // Get the URL of the file $url = $upload->getUrl($key); // Delete a file $result = $upload->delete($key); // Delete multiple files // Pass array of uploaded keys. Ex: ["folders/others/image-1.png", "folders/others/image-2.png"] $result = $upload->deletes([$key1, $key2]);
使用特质
将特质附加到具有将保存在 S3 或本地的一些媒体属性的模式上
在您的模式中
class YourModel extends \yii\db\ActiveRecord { use \prointix\uploads\traits\MediaTrait; // ... }
在您的控制器中
$model = new YourModel(); if ($model->load($this->request->post())){ $image = \yii\web\UploadedFile::getInstance($model, 'my_file_attribute'); // Save image as my_image.png on S3 or Local at `/folders/others` path // $model->image will hold "folders/others/{filename}-{uniqid()}.{ext}" after this call finish with success $model->saveUploadedFile($image, 'image', '/folder/others'); // Get the URL of the file $model->getFileUrl('image'); // Remove the file with named saved on the image attribute // Continuing the example, here "folders/images/my_image.png" will be deleted from S3 or Local base on your config $model->removeFile('image'); }