studiosite / yii2download
用于删除文件和图片的操作
Requires
- php: >=5.4.0
- wapmorgan/unified-archive: *
- yiisoft/yii2: *
- yiisoft/yii2-imagine: ~2.0.0
This package is auto-updated.
Last update: 2024-08-29 03:56:55 UTC
README
用于创建下载链接的组件,可以叠加滤镜下载图片和文件
安装
建议通过 composer 安装此扩展。请访问 composer。
运行
$ php composer.phar require studiosite/yii2download "*"
或在 composer.json
文件的 require
部分添加以下内容:
"studiosite/yii2download": "*"
studiosite/yii2download
使用
Yii2 Download
在应用配置中,需要将控制器映射到 studiosite\yii2download\controllers\DownloadController
,或者继承并配置
...
...
'controllerMap' => [
'download' => 'studiosite\yii2download\controllers\DownloadController',
...
],
...
...
组件生成图片链接(studiosite\yii2download\components\ImageDownload
)和文件链接(studiosite\yii2download\components\FileDownload
)
...
'components' => [
...
'image' => [
// Класс компонента (Обязательно для конфигурирования)
'class' => 'studiosite\yii2download\components\ImageDownload',
// Список директорий из которых допустима отдача файлов [имя роута] => роут (Обязательно для конфигурирования)
// В динамических ссылка будет заменяться абсолютной ссылки на файл на роут (На пример путь к файлу /var/www/project/common/data/image/user/avatar.png будет изменен на user/avatar.png)
'allowPath' => [
'user' => '@common/data/images/user',
'images' => '@common/data/images',
],
// Роут отдачи, сконфигурированный выше в controllerMap. Для изображений используется экшен image (Обязательно для конфигурирования) (По умолчанию '/download/image')
'route' => '/download/image',
// Конфигурирование пользовательских фильтров. Фильтр по умолчанию (studiosite\yii2download\components\ImageDownload::defaultFilters()) будут склеины с пользовательскими (По умолчанию [])
'filters' => [
//'watermark' => '\\common\\componets\Watermark',
],
// Путь куда публиковать файлы для отдачи (По умолчанию '@app/web/assets')
'assetsFolder' => '@app/web/assets/images',
// Базовый путь для отдачи ссылки (По умолчанию '@web/assets')
'baseAssetsFolder' => '@web/assets/images',
// Имя класса проверки прав отдачи файла.
// Используется при необходимости защищенной отдачи конкретным пользователям
// Класс проверки долже соответствовать интерфейсу studiosite\yii2download\interfaces\AccessManagerInterface
// (По умолчанию не указан, проверки не будет)
'accessManager' => 'studiosite\yii2download\components\AccessManager',
// Имя этого компонента для дальнейшей обработки в контроллере. Yii::$app->image
// (По умолчанию 'image')
'componentNameForController' => 'image',
// Запретить прегенерацию темп файла до контроллера для незащищенной отдачи (По умолчанию false).
// При указании true может уменьшить нагрузку при отрисовки страниц с большим списком изображений.
// Ссылка получится динамической, может потребоваться для передачи через апи, что бы запрашивавший сервер не потерял ссылку при очестве assets
'prohibitPrepublish' => false,
// Время приватного кеширования в секундах для динамических ссылок (По умолчанию 100 минут (6000))
'privateCacheTime' => 6000,
],
'file' => [
// Класс компонента (Обязательно для конфигурирования)
'class' => 'studiosite\yii2download\components\FileDownload',
// Список директорий из которых допустима отдача файлов [имя роута] => роут (Обязательно для конфигурирования)
'allowPath' => [
'images' => '@common/data/images/content',
],
// Роут отдачи, сконфигурированный выше в controllerMap. Для изображений используется экшен image (Обязательно для конфигурирования) (По умолчанию '/download/file')
'route' => '/download/file',
// Имя этого компонента для дальнейшей обработки в контроллере. Yii::$app->file
// (По умолчанию 'file')
'componentNameForController' => 'file',
// Все остальные параметры по аналогии с компонентом image
...
]
...
...
组件使用方式如下:Yii::$app->ИМЯ_КОМПОНЕНТА->path(绝对路径)->ИМЯ_ФИЛЬТРА(参数)->link();
对于图片组件,函数 path
接受两个参数:
- fileName - 原始图片的绝对路径
- notFoundFile - 当原始文件未找到时使用的图片的绝对路径
使用示例
...
// Изменит размер исходного изображение до 1000 на 1000 px, качество 100 качество 90 % и конвертирует в формат image/jpeg
echo
// результат с указаной выше конфигурацией будет (Доступ менеджер указан, ссылка динамическая) http://example.com/download/image?name=user%2Fno-image.png&component=image&thumbnail%5Bsize%5D=1000&thumbnail%5Bquality%5D=90&convert%5Bextention%5D=jpg
Yii::$app->image->path('@common/data/images/user/no-image.png')->thumbnail([
'size' => 1000,
'quality' => 90,
])->convert([
'extention' => 'jpg'
])->link();
// Конвертирует в формат image/jpeg
// результат с указаной выше конфигурацией будет (Доступ менеджер указан, ссылка динамическая) http://example.com/download/image?name=user%2Fno-image.png&component=image&convert%5Bextention%5D=JPEG
echo Yii::$app->image->path('@common/data/images/user/no-image.png')->convert([
'extention' => 'JPEG'
])->link();
// Сожмет файл (используется компонент https://github.com/wapmorgan/UnifiedArchive). На момент написания доступен долько дефолтный алгорим сжатия (формат zip)
// результат с указаной выше конфигурацией будет (Доступ менеджер не указан) http://example.com/assets/images/no-image-14bf6.zip Ссылка из асетсов
echo Yii::$app->file->path('@common/data/images/user/no-image.png')->compress()->link();
// Просто отдача файла
// результат с указаной выше конфигурацией будет (Доступ менеджер не указан) http:///example.com/assets/images/no-image-8808b.png
echo Yii::$app->file->path('@common/data/images/user/no-image.png')->link();
// Отдача файла с возможным несуществованием оригинала
// результат с указаной выше конфигурацией будет (Доступ менеджер не указан) http:///example.com/assets/images/no-image-8808b.png
echo Yii::$app->file->path('@common/data/images/user/file.png', '@common/data/images/user/no-image.png')->link();
...
在 ImageDownload 组件中
滤镜
本包包含 3 个图片滤镜和 1 个文件滤镜:
以及 1 个文件滤镜
图片滤镜
convert - 将图像转换为其他格式
使用 1 个参数 extension
,默认为 null
。图像模型是 yii\imagine\Image
对象,支持的格式取决于使用的引擎
滤镜可以与其他图片滤镜一起使用
thumbnail - 按大小和质量压缩图像的滤镜
接受以下参数:
size
- 正方形的边长size=width=height
。此选项优先于width
和height
width
- 图像宽度。默认保持不变height
- 图像高度。默认保持不变quality
- 图像质量(100 - 不压缩)。默认 100%
所有参数都是可选的
滤镜可以与其他图片滤镜一起使用
watermark - 在图像上叠加水印
接受以下参数:
image
- 水印图像的绝对路径right
- 从右边界的位置(可选参数)left
- 从左边界的位置(可选参数)top
- 从顶部的位置(可选参数)bottom
- 从底部的位置(可选参数)resize
- 改变水印的大小(1 - 不改变,1.1 - 放大 10%)(默认 1)
滤镜可以与其他图片滤镜一起使用
文件滤镜
compress - 压缩文件
接受 1 个参数 format
,默认为 zip
。关于支持的格式,请参阅 wapmorgan/UnifiedArchive
滤镜不能与其他图片滤镜一起使用,结束过滤是回调压缩
测试
进入包文件夹并安装依赖项
cd studiosite/yii2download
composer install
然后在同一位置进行测试
phpunit