prointix/yii2-prointix-upload

本扩展用于 PROINTIX 项目

安装: 15

依赖者: 0

建议者: 0

安全性: 0

星星: 0

观察者: 1

分支: 0

开放问题: 0

类型:yii2-extension

v0.0.1 2024-03-16 09:21 UTC

This package is auto-updated.

Last update: 2024-09-16 10:56:05 UTC


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');
}