# 驱动 ## 说明 从之前的3.0,3.1版本中文件上传,sms短信发送,小票打印机书文件存放还是书写都比较随意,因此pro版本和3.2版本中修改成多驱动形式; ## 文件目录结构 ``` ├─crmeb CREMB核心类库 │ ├─services │ │ ├─printer 打印机 │ │ ├─sms 短信 │ │ ├─template 模板消息 │ │ ├─upload 文件上传 ``` ## Template 使用方式 ~~~ //以微信公众号小程序模板消息为驱动方式 $template = new Template('wechat'); $res=$template->to('送达人openid')->color('字体颜色')->url('跳转路径')->send('模板id编号',array [发送数据]); if($res === false){ dump($res->getError()); }else{ dump('ok'); } ~~~ ## 增加驱动 ### 说明 这里以文件上传为例进行增加金山云文件上传,创建的文件名必须首字母大写 ### 第一步,增加金山云上传驱动文件类 crmeb\services\upload\storage\Jinshan.php ~~~ <?php namespace crmeb\services\upload\storage; use crmeb\basic\BaseUpload; class Jinshan extends BaseUpload { //实例化类 protected function initialize(array $config) { parent::initialize($config); // TODO: Change the autogenerated stub } // 实例化上传 protected function app() { // TODO: Implement app() method. } //上传文件 public function move(string $file = 'file') { // TODO: Implement move() method. } //上传流文件 public function stream(string $fileContent, string $key = null) { // TODO: Implement stream() method. } //删除文件 public function delete(string $filePath) { // TODO: Implement delete() method. } //获取上传密钥 public function getTempKeys() { // TODO: Implement getTempKeys() method. } } ~~~ ### 增加上传配置 config/upload.php 每一个驱动都能增加单独的上传配置 ~~~ return [ //默认上传模式 'default' => 'local', //上传文件大小 'filesize' => 2097152, //上传文件后缀类型 'fileExt' => ['jpg', 'jpeg', 'png', 'gif', 'pem', 'mp3', 'wma', 'wav', 'amr', 'mp4', 'key'], //上传文件类型 'fileMime' => ['image/jpeg', 'image/gif', 'image/png', 'text/plain', 'audio/mpeg'], //驱动模式 'stores' => [ //本地上传配置 'local' => [], //七牛云上传配置 'qiniu' => [], //oss上传配置 'oss' => [], //cos上传配置 'cos' => [], //金山云上传配置 'jinshan'=>[ 'filesize'=>2097152, 'fileExt'=>['jpg'], 'fileMime'=>['image/jpeg'], ], ] ]; ~~~ ### 实例调用 ~~~ $upload = new Upload('jinshan'); //validate 参数为数组如果不填写默认读取jinshan云的配置进行上传验证 $res = $upload->to('上传路径')->validate()->move(); if($res !== false){ //返回类型为对象 dump($res); //可调用getUploadInfo来获取保存在附件表的详细信息 dump($upload->getUploadInfo()); //可调用getFileInfo来获取上传后返回的对象 dump($upload->getFileInfo()); }else{ //上传失败调用getError 获取错误信息 dump($upload->getError()); } ~~~