getDir($userId); $path = $dir . '/' . uniqid() . '.' . $file->getClientOriginalExtension(); $disk = StorageConfig::getStorage(); $res = FacadesStorage::disk($disk)->putFileAs(dirname($path), $file, basename($path)); if ($res === false) { throw new \Exception('服务器错误,请联系客服.'); } $fileModel = new FileFile(); $fileModel->path = $path; $fileModel->re_type = $reType; $fileModel->re_id = $reId; $fileModel->o_name = $file->getClientOriginalName(); $fileModel->fsize = $file->getSize(); $fileModel->type1 = $file->getClientOriginalExtension(); $fileModel->save(); // 触发文件上传事件 event(new FileUploadedEvent($fileModel)); return $fileModel; } /** * 上传图片 * * @param UploadedFile $file 上传的图片 * @param int $userId 用户ID * @param bool $private 是否私有 * @param string $reType 关联类型 * @param int $reId 关联ID * @return FileImg 图片模型 */ public function uploadImage(UploadedFile $file, int $userId, bool $private = false, string $reType = '', int $reId = 0) { $uploader = new UploadService($userId); $fileImg = $uploader->uploadImg($file, $private); if (!empty($reType) && $reId > 0) { $fileImg->re_type = $reType; $fileImg->re_id = $reId; $fileImg->save(); } // 触发图片上传事件 event(new ImageUploadedEvent($fileImg)); return $fileImg; } /** * 获取文件URL * * @param int $fileId 文件ID * @return string 文件URL */ public function getFileUrl(int $fileId) { $file = FileFile::find($fileId); if (!$file) { return ''; } $disk = StorageConfig::getStorage(); return FacadesStorage::disk($disk)->url($file->path); } /** * 获取图片URL * * @param int $imageId 图片ID * @param bool $private 是否私有 * @return string 图片URL */ public function getImageUrl(int $imageId, bool $private = false) { $imgService = new ImgService(); return $imgService->getPicUrl4Id($imageId, $private); } /** * 删除文件 * * @param int $fileId 文件ID * @return bool 是否成功 */ public function deleteFile(int $fileId) { $file = FileFile::find($fileId); if (!$file) { return false; } $disk = StorageConfig::getStorage(); $path = $file->path; $result = $file->delete(); if ($result) { // 触发文件删除事件 event(new FileDeletedEvent($fileId, $path, $disk)); } return $result; } /** * 删除图片 * * @param int $imageId 图片ID * @return bool 是否成功 */ public function deleteImage(int $imageId) { $image = FileImg::find($imageId); if (!$image) { return false; } $path = $image->path; $disk = $image->storage_disk; $result = $image->delete(); if ($result) { // 触发图片删除事件 event(new ImageDeletedEvent($imageId, $path, $disk)); } return $result; } /** * 保存临时文件 * * @param string $ext 文件扩展名 * @param string $content 文件内容 * @return string 临时文件路径 */ public function saveTempFile(string $ext, string $content) { $temporaryService = new TemporaryService(); return $temporaryService->save($ext, $content); } /** * 获取临时文件URL * * @param string $path 临时文件路径 * @return string 临时文件URL */ public function getTempFileUrl(string $path) { $temporaryService = new TemporaryService(); return $temporaryService->getDownUrl($path); } }