neoacevedo / yii2-storage
该包已被废弃,不再维护。没有建议的替代包。
为Yii2提供存储管理。
此包尚未发布任何版本,且信息有限。
README
为Yii2提供存储管理。
项目因缺乏支持而归档。
#storage #module #upload #file #extension #aws #azure #google
安装
安装此扩展的首选方式是通过 composer。
然后执行
php composer.phar require --prefer-dist neoacevedo/yii2-storage
或将其添加到您的 composer.json
文件的 require 部分。
"neoacevedo/yii2-storage": "*"
使用
安装扩展后,请在您的 Yii 应用配置文件中配置存储服务的凭证。
<?php
'components' => [
/**
* Amazon S3
*/
'storageAWS' => [
'class' => 'neoacevedo\yii2\storage\S3Storage',
'config' => [
'key' => 'YOUR_IAM_ACCESS_KEY',
'secret' => 'YOUR_IAM__SECRET_ACCESS_KEY',
'bucket' => 'your-bucket',
'region' => 'your-region',
'extensions' => 'pdf, jpg, jpeg, gif, png, bmp'
],
'prefix' => '', // ruta al directorio de imágenes. Ej: images/ (Opcional)
]
/**
* Azure Storage Blob
*/
'storageAzure' => [
'class' => 'neoacevedo\yii2\storage\AzureStorage',
'config' => [
'accountName' => 'ACCOUNT_NAME',
'accountKey' => 'ACCOUNT_KEY',
'container' => 'your-container',
'extensions' => 'pdf, jpg, jpeg, gif, png, bmp'
],
'prefix' => '' // ruta al directorio de imágenes. Ej: images/ (Opcional)
]
/**
* Google Storage Cloud
*/
'storageGoogle' => [
'class' => 'neoacevedo\yii2\storage\GoogleCloudStorage',
'config' => [
'projectId' => 'YOUR_PROJECT_ID',
'bucket' => 'your-bucket'
'keyFile' => '', // Contenido del archivo JSON generado en la consola de Google
'extensions' => 'pdf, jpg, jpeg, gif, png, bmp'
],
'prefix' => '', // ruta al directorio de imágenes. Ej: images/ (Opcional)
]
/**
* Almacenamiento local
*/
'storageLocal' => [
'class' => 'neoacevedo\yii2\storage\LocalStorage',
'config' => [
'baseUrl' => '/web', // reemplace "/web" por "/", "@web", "/frontend/web" o "/backend/web" según sea el caso.
'directory' => '@webroot/web/uploads/', // reemplace @webroot por @frontend o @backend según sea el caso. La ruta debe terminar con una barra diagonal
'extensions' => 'pdf, jpg, jpeg, gif, png, bmp'
],
'prefix' => '', // ruta al directorio de imágenes. La ruta debe terninar con una barra diagonal si se establece. Ej: images/ (Opcional)
]
现在您可以从应用程序中调用它
...
$fileManager = Yii::$app->storage->getFileManager();
...
/**
* Sube el archivo de imagen.
* @param \neoacevedo\yii2\storage\models\FileManager $fileManager
* @return boolean
*/
public function upload($fileManager)
{
if (null !== $fileManager->uploadedFile) {
return Yii::$app->storage->save($fileManager);
} else {
return false;
}
}
...
// obtener la URL generada
echo Yii::$app->storage->getUrl(Yii::$app->storage->prefix . $fileManager->uploadedFile->name);
或直接在代码中调用
<?php
use neoacevedo\yii2\storage\S3Storage;
public function upload()
{
$storage = new S3Storage([
'config' => [
'key' => 'YOUR_IAM_ACCESS_KEY',
'secret' => 'YOUR_IAM_SECRET_ACCESS_KEY',
'bucket' => 'your-bucket',
'region' => 'your-region',
'extensions' => 'pdf, jpg, jpeg, gif, png, bmp'
],
'prefix' => '' // opcional
]);
return $storage->save($storage->getFileManager());
}
您可以在控制器中通过以下方式使用组件模型来构建您的表单
...
// Constructor de clase
$storage = new S3Storage([
'config' => [
'key' => 'YOUR_IAM_ACCESS_KEY',
'secret' => 'YOUR_IAM_SECRET_ACCESS_KEY',
'bucket' => 'your-bucket',
'region' => 'your-region',
'extensions' => 'pdf, jpg, jpeg, gif, png, bmp'
],
'prefix' => '' // opcional
]);
return $this->render('create', [
'model' => $model,
'fileManager' => $storage->getFileManager()
]);
...
// Como componente
return $this->render('create', [
'model' => $model,
'fileManager' => Yii::$app->storage->getFileManager()
]);
...
// Usando el modelo de manera directa
return $this->render('create', [
'model' => $model,
'fileManager' => new neoacevedo\yii2\storage\models\FileManager()
]);
在视图中
<?= $form->field($fileManager, 'uploadedFile')->fileInput() ?>