studiosite/yii2download
Composer 安装命令:
composer require studiosite/yii2download
包简介
Actions for dropping files and pictures
README 文档
README
Компонент формирования ссылок для скачивания (отдачи) изображений и файлов с наложением фильтров
Установка
Предпочтительный способ установить это расширение через композитор. composer.
Запустите
$ php composer.phar require studiosite/yii2download "*"
или добавить
"studiosite/yii2download": "*"
в секции `require` composer.json файла.
Использование
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 принимает 2 параметра:
- 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 фильтр файлов
Фильтры изображений
convert - Конвертирование изображения в другой формат
Применяется с 1 параметром extention, по умолчанию - null.
Модель изображения является yii\imagine\Image объект, п/у возможные форматы зависят от используемого движка
Фильтр может использоваться с другими фильтрами изображений
thumbnail - Фильтр сжатия изображения по размеру и качеству
Принимает параметры:
size- размер стороны квадратаsize=width=height. Опция приоритетнееwidthиheightwidth- ширина изображения. По умолчанию остается прежнейheight- высота изображения. По умолчанию остается прежнейquality- качество изображение (100 - изображение не сжимается). По умолчанию 100%
Все параметры не обязательны
Фильтр может использоваться с другими фильтрами изображений
watermark - Наложения водяного знака на изображение
Принимает параметры:
image- абсолютный путь до изображения водяного знакаright- положение от правого края (не обязательный параметр)left- положение от левого края (не обязательный параметр)top- положение от верха (не обязательный параметр)bottom- положение от низа (не обязательный параметр)resize- изменить размер знака (1 не менять, 1.1 увелечить на 10%) (По умолчанию 1)
Фильтр может использоваться с другими фильтрами изображений
Фильтры файлов
compress - Сжатия файла
Принимает 1 параметр format, по умолчанию zip. Подробнее о поддерживаемых форматах wapmorgan/UnifiedArchive
Фильтр НЕ может использоваться с другими фильтрами изображений, окончания фильтрации является callback сжатия
Тестирование
Перейти в папку с пакетом и установить зависимости
cd studiosite/yii2download
composer install
Далее для тестирования в том же месте
phpunit
studiosite/yii2download 适用场景与选型建议
studiosite/yii2download 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 37 次下载、GitHub Stars 达 0, 最近一次更新时间为 2016 年 01 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「image」 「file」 「download」 「actions」 「yii2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 studiosite/yii2download 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 studiosite/yii2download 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 studiosite/yii2download 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
The NzoFileDownloaderBundle is a Symfony Bundle used to Download all types of files from servers and Web applications safely and with ease. You can also read/show the file content in the Web Browser.
The file manager intended for using Laravel with CKEditor / TinyMCE / Colorbox
Yii2 LightBox image galary widget uses Lightbox v2.10.0 by Lokesh Dhakar
Adds a download link next to assets
The Yii2 extension uses jQuery jquery.carousel-1.1.min.js and makes image carousel from php array of structure defined.
The Yii2 extension uses jQuery PrettyPhoto and OwlCarousel js and makes image galary from php array of structure defined.
统计信息
- 总下载量: 37
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 6
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2016-01-27