config = SettingModel::getItem('storage'); // 验证用户 $this->user = $this->getUser(); } /** * 图片上传接口 * $is_original: 生成缩略图后,是否保留原图 */ public function image($file_type = 'image', $is_original = false) { // 实例化存储驱动 $StorageDriver = new StorageDriver($this->config); // 图片信息 $fileInfo = request()->file('iFile'); if(!$StorageDriver->validate('iFile', $fileInfo, $file_type)){ return json(['code' => 0, 'msg' => $StorageDriver->getError()]); } // 设置上传文件的信息 $StorageDriver->setUploadFile('iFile'); // 上传图片 $saveName = $StorageDriver->upload(); if ($saveName == '') { return json(['code' => 0, 'msg' => '上传失败' . $StorageDriver->getError()]); } $saveName = str_replace('\\', '/', $saveName); // 生成缩略图并获取原图路径 $originalName = ''; if ($file_type == 'image') { if($this->config['default']!='aliyun'){ $originalName = $StorageDriver->createThumb($saveName, $is_original); } } // 图片上传路径 $fileName = $StorageDriver->getFileName(); // 添加文件库记录 $uploadFile = $this->addUploadFile($fileName, $fileInfo, $file_type, $saveName, $originalName); $data = [ 'file_id' => $uploadFile->file_id, 'file_path' => $uploadFile['file_path'], ]; // 图片上传成功 return json(['code' => 1, 'msg' => '上传成功', 'data' => $data]); } /** * 添加文件库上传记录 */ private function addUploadFile($fileName, $fileInfo, $fileType, $savename, $originalName = '') { // 存储引擎 $storage = $this->config['default']; // 存储域名 $fileUrl = isset($this->config['engine'][$storage]['domain']) ? $this->config['engine'][$storage]['domain'] : ''; // 添加文件库记录 $model = new UploadFileModel; $data = $this->postData(); $model->add([ 'storage' => $storage, 'file_url' => $fileUrl, 'file_name' => $fileName, 'save_name' => $savename, 'original_name' => $originalName, // 原图路径 by lyzflash 'is_original' => $originalName ? 1 : 0, 'file_size' => $fileInfo->getSize(), 'file_type' => $fileType, 'extension' => $fileInfo->getOriginalExtension(), 'real_name' => $fileInfo->getOriginalName(), 'is_user' => 1, 'app_id' => $data['app_id'] ]); return $model; } /** * 图片加密付呗接口 */ public function imageFbEncryption() { $data = $this->postData(); //如果是付呗接口,配置参数 by yj $app = FbPay::getFbPayApp($this->user['app_id'], 'wx'); $FbPay = new FbPay($app); $result = $FbPay->imgupload($data["img"],$data["bus_type"]); // 图片上传成功 return json(['code' => 1, 'msg' => '图片加密成功', 'data' => $result]); } }