ConfigService::get('storage', 'default', 'local'), 'engine' => ConfigService::get('storage') ?? ['local'=>[]], ]; // 2、执行文件上传 $StorageDriver = new StorageDriver($config); $StorageDriver->setUploadFile('file'); $fileName = $StorageDriver->getFileName(); $fileInfo = $StorageDriver->getFileInfo(); // 校验上传文件后缀 if (!in_array(strtolower($fileInfo['ext']), config('project.file_image'))) { throw new Exception("上传图片不允许上传". $fileInfo['ext'] . "文件"); } // 上传文件 $save_dir = $save_dir . '/' . date('Ymd'); if (!$StorageDriver->upload($save_dir)) { throw new Exception($StorageDriver->getError()); } // 3、处理文件名称 if (strlen($fileInfo['name']) > 128) { $file_name = substr($fileInfo['name'], 0, 123); $file_end = substr($fileInfo['name'], strlen($fileInfo['name'])-5, strlen($fileInfo['name'])); $fileInfo['name'] = $file_name.$file_end; } // 4、写入数据库中 $file = File::create([ 'cid' => $cid, 'type' => FileEnum::IMAGE_TYPE, 'name' => $fileInfo['name'], 'uri' => $save_dir . '/' . str_replace("\\","/", $fileName), 'source' => $source, 'source_id' => $source_id, 'create_time' => time(), 'ip' => request()->ip(), ]); // 5、返回结果 return [ 'id' => $file['id'], 'cid' => $file['cid'], 'type' => $file['type'], 'name' => $file['name'], 'uri' => FileService::getFileUrl($file['uri']), 'url' => $file['uri'] ]; } catch (Exception $e) { throw new Exception($e->getMessage()); } } /** * @notes 视频上传 * @param $cid * @param int $user_id * @param string $save_dir * @return array * @throws Exception * @author 张无忌 * @date 2021/7/29 9:41 */ public static function video($cid,$source_id = 0,$source = FileEnum::SOURCE_BACKSTAGE, $save_dir='uploads/video') { try { $config = [ 'default' => ConfigService::get('storage', 'default', 'local'), 'engine' => ConfigService::get('storage') ?? ['local'=>[]], ]; // 2、执行文件上传 $StorageDriver = new StorageDriver($config); $StorageDriver->setUploadFile('file'); $fileName = $StorageDriver->getFileName(); $fileInfo = $StorageDriver->getFileInfo(); // 校验上传文件后缀 if (!in_array(strtolower($fileInfo['ext']), config('project.file_video'))) { throw new Exception("上传视频不允许上传". $fileInfo['ext'] . "文件"); } // 上传文件 $save_dir = $save_dir . '/' . date('Ymd'); if (!$StorageDriver->upload($save_dir)) { throw new Exception($StorageDriver->getError()); } // 3、处理文件名称 if (strlen($fileInfo['name']) > 128) { $file_name = substr($fileInfo['name'], 0, 123); $file_end = substr($fileInfo['name'], strlen($fileInfo['name'])-5, strlen($fileInfo['name'])); $fileInfo['name'] = $file_name.$file_end; } // 4、写入数据库中 $file = File::create([ 'cid' => $cid, 'type' => FileEnum::VIDEO_TYPE, 'name' => $fileInfo['name'], 'uri' => $save_dir . '/' . str_replace("\\","/", $fileName), 'source' => $source, 'source_id' => $source_id, 'create_time' => time(), 'ip' => request()->ip(), ]); // 5、返回结果 return [ 'id' => $file['id'], 'cid' => $file['cid'], 'type' => $file['type'], 'name' => $file['name'], 'uri' => FileService::getFileUrl($file['uri']), 'url' => $file['uri'] ]; } catch (Exception $e) { throw new Exception($e->getMessage()); } } /** * @notes 上传素材 * @param $url * @author cjhao * @date 2021/11/22 17:04 */ public static function wechatMaterial(UploadedFile $file) { try { $dir = './uploads/temp'; $original_name = $file->getOriginalName(); $file->move($dir,$original_name); $config = WeChatConfigService::getMnpConfig(); $app = Factory::miniProgram($config); $path = ROOT_PATH . '/uploads/temp/' . $original_name; $result = $app->media->uploadImage($path); unlink($path); return ['media_id' => $result['media_id'], 'url' => FileService::getFileUrl('uploads/temp/' . $original_name)]; } catch (\Exception $e) { return $e->getMessage(); } } static function delete(array $uris = []) { try { $config = [ 'default' => ConfigService::get('storage', 'default', 'local'), 'engine' => ConfigService::get('storage') ?? ['local'=>[]], ]; $StorageDriver = new StorageDriver($config); foreach ($uris as $uri) { if ($uri) { $StorageDriver->delete($uri); } } return true; } catch (\Throwable $e) { Log::write($e->__toString(), 'upload_delete_error'); return false; } } }