xing.chen / upload
文件上传插件 支持原生代码使用,YII2框架,支持上传到自有服务和阿里云OSS,支持图片文件上传和base64编码上传,支持上传远程图片至阿里云OSS
dev-master
2020-07-17 06:33 UTC
Requires
- php: >=7.0.0
- aliyuncs/oss-sdk-php: ^2.2
This package is auto-updated.
Last update: 2024-10-17 15:18:43 UTC
README
优点
1、支持YII2,和阿里云OSS
2、支持上传base64字符串的图片,支持上传图片,支持上传远程图片至阿里云OSS
3、所有驱动使用interface规范
提示:packagist目录链接有问题,推荐到我的项目地址中看文档
目录文档
安装
composer require xing.chen/upload dev-master
配置
原生代码配置
<?php // 上传到自有服务器 $config = [ 'class' => 'xing\upload\UploadYii', 'uploadPathRoot' => '/var/www/', # 网站目录 'relativePath' => 'upload/', # 上传目录 'maxSize' => 2048000, ## 上传大小限制 'domain' => 'http://images.xxx.com/', # 访问域名 ]; // 上传到OSS $config = [ 'uploadPathRoot' => '/var/www/', # 网站目录 'relativePath' => 'upload/', 'maxSize' => 2048000, ## 上传大小限制 'domain' => 'http://images.xxx.com/', # 访问域名 'config' => [ 'OSS_ACCESS_ID' => 'oos id', 'OSS_ACCESS_KEY' => 'OSS_ACCESS_KEY', 'OSS_ENDPOINT' => $_SERVER["REMOTE_ADDR"] === '127.0.0.1' ? 'oss-cn-shanghai.aliyuncs.com' : 'oss-cn-shanghai-internal.aliyuncs.com', 'UploadBucket' => 'bucket', //上传到云存储服务器的bucket名字 'UploadDomain' => 'xxx.com', //上传文件的Bucket可以自定义域名,对于不同的Bucket使用不同的自定义域名 ] ];
YII框架配置
yii框架中可以同时支持上传至oss和自有服务器
<?php 'components' => [ 'upload' => [ 'class' => 'xing\upload\core\YiiFactory', # 默认使用驱动 'driveName' => 'ali', 'config' =>[ // oss配置 'ali' => [ 'OSS_ACCESS_ID' => 'OSS_ACCESS_ID', 'OSS_ACCESS_KEY' => 'OSS_ACCESS_KEY', 'OSS_ENDPOINT' => 'oss 里的ENDPOINT', 'UploadBucket' => 'Bucket名称', //上传到云存储服务器的bucket名字 'UploadDomain' => 'xxx.com', //上传文件的Bucket可以自定义域名,对于不同的Bucket使用不同的自定义域名 'domain' => 'http://xxx.com/', 'relativePath' => 'upload/', ], // 上传到自有服务器配置 'yii' => [ 'uploadPathRoot' => '@api/web/', 'maxSize' => 2048000, 'domain' => 'http://xxx.com/', 'relativePath' => 'upload/', ], ], ] ];
原生代码上传
<?php $drive = '驱动:如 ali 或 yii'; $upload = \xing\upload\core\UploadFactory::getInstance($drive)->config('驱动的简单配置,详细参考单一配置'); # 文件上传 $r = $upload->upload($postFieldName, '图片分类目录,如user'); # base64编码上传 $r = $upload->uploadBase64('base64编码', '图片分类目录,如user'); # 远程图片上传(仅支持阿里云) $upload->uploadUrl('http://xx.com/xx.jpg');
yii框架上传
<?php # 文件上传 $driveName = '填ali 或 yii,留空则使用默认配置中的'; $postFieldName = '上传表单名,如:model[image]或image'; $upload = Yii::$app->upload->getDrive($driveName); $r = $upload->upload($postFieldName, '图片分类目录,如user'); # base64 编码上传 $r = $upload->uploadBase64('base64编码', '图片分类目录,如user'); # 远程图片上传(仅支持阿里云) $upload->uploadUrl('http://xx.com/xx.jpg');
返回数据说明
//返回为数据为: ["url" => "http://xxx.com/upload/user/20171229140622184.jpg", // 完整url "saveUrl" => "user/20171229140622184.jpg" // 相对url,保存到数据库里使用这个 ]
前端访问
<?php # 相对url补全 ( 保存到数据库为 $r['saveUrl'],数据取出时需补全) $upload->getFileUrl($r['saveUrl']); // 图片完整访问url # 删除
删除图片
<?php $upload->delete($r['saveUrl']); // 删除图片 ?>