bahirul/yii2-simple-s3

此包已被废弃,不再维护。没有建议的替代包。

自定义S3文件系统的简单Yii2扩展

安装: 3

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:扩展

0.0.2 2020-05-03 03:42 UTC

This package is auto-updated.

Last update: 2021-09-19 05:17:22 UTC


README

简单的自定义S3文件系统扩展,具有基本功能:读取、写入、删除。
此扩展使用 Flysystem 作为核心文件系统。

安装

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

运行以下命令之一:

$ composer require bahirul/yii2-simple-s3

或者

"bahirul/yii2-simple-s3": "^0.0.2"

将其添加到你的 composer.json 文件的 require 部分。

配置

按照以下方式配置应用的 components

return [
    //...
    'components' => [
        //...
        's3' => [
            'class' => 'bahirul\yii2\SimpleS3',
            'endpoint' => 'YOUR_S3_URL',
            'key'    => 'YOUR_S3_KEY',
            'secret' => 'YOUR_S3_SECRET',
            'bucket' => 'YOUR_S3_BUCKET',
            //'region' => 'YOUR_S3_REGION', // Optional
            //'version' => 'YOUR_S3_VERSION', // Optional
        ],
    ],
];

使用方法

从S3读取文件

readFile() 方法将返回包含 'stream' 和 'mimetype' 键的数组。

在控制器中作为响应发送

// s3 custom init
$s3 = Yii::$app->s3;

// your requested file
$fileRequest = 'example_file_image.jpg';

// read file on S3
$readFile = $s3->readFile($fileRequest);

// init web response
$response = Yii::$app->response;
$response->headers->set('Content-Type', $readFile['mimetype']);
$response->format = \yii\web\Response::FORMAT_RAW;
$response->stream = $readFile['stream'];

return $response->send();

或者在控制器中作为文件发送

// s3 custom init
$s3 = Yii::$app->s3;

// your requested file
$fileRequest = 'example_file_image.jpg';

// read file on S3
$readFile = $s3->readFile($fileRequest);

// init web response
$response = Yii::$app->response;

return $response->sendStreamAsFile($readFile['stream'], $fileRequest ,['mimeType' => $readFile['mimetype']]);

将文件写入S3

writeFile() 方法将返回布尔值。

在控制器中的写入(上传)用法

// your file upload instance
$fileModel = UploadedFile::getInstance($model, 'attributeName');

$s3 = Yii::$app->s3;

// generate random filename
$filename = time() . '.jpg';

if($model->load($post) && $model->validate()){
    // upload file to s3
    $s3->writeFile($fileModel, $filename);
}

在S3上删除文件

deleteFile() 方法将返回布尔值。

在控制器中的删除用法

$s3 = Yii::$app->s3;

$fileRequest = 'example_file_image.jpg';

$s3->deleteFile($fileRequest);