diff --git a/extend/base/common/service/UploadServiceBase.php b/extend/base/common/service/UploadServiceBase.php index f4282cf..f1ce399 100644 --- a/extend/base/common/service/UploadServiceBase.php +++ b/extend/base/common/service/UploadServiceBase.php @@ -113,23 +113,31 @@ class UploadServiceBase $model_file->mime_type = $file->getMime(); } - $save_name = Filesystem::disk($this->uploadType)->putFile($upload_dir, $file, function () use ($save_name, $file) { - if (!is_null($save_name)) { - $ext_name = $file->extension(); + try { + $save_name = Filesystem::disk($this->uploadType)->putFile($upload_dir, $file, function () use ($save_name, $file) { + if (!is_null($save_name)) { + $ext_name = $file->extension(); - if (empty($ext_name)) { - return $save_name; + if (empty($ext_name)) { + return $save_name; + } + + $list_name = explode('.', $save_name); + + array_pop($list_name); + + return implode('.', $list_name); } - $list_name = explode('.', $save_name); + return date('Ymd') . '/' . uniqid(); + }); + } catch (\Throwable $e) { + throw new \Exception('文件上传失败:' . $e->getMessage()); + } - array_pop($list_name); - - return implode('.', $list_name); - } - - return date('Ymd') . '/' . uniqid(); - }); + if ($save_name === false) { + throw new \Exception('文件上传失败:存储写入失败'); + } $url = $this->url($save_name); diff --git a/extend/think/filesystem/Driver.php b/extend/think/filesystem/Driver.php index e804141..154d783 100644 --- a/extend/think/filesystem/Driver.php +++ b/extend/think/filesystem/Driver.php @@ -19,6 +19,7 @@ use League\Flysystem\UnableToWriteFile; use RuntimeException; use think\Cache; use think\File; +use think\facade\Log; /** * Class Driver @@ -104,10 +105,12 @@ abstract class Driver $stream = fopen($file->getRealPath(), 'r'); $path = trim($path . '/' . $name, '/'); - $result = $this->put($path, $stream, $options); - - if (is_resource($stream)) { - fclose($stream); + try { + $result = $this->put($path, $stream, $options); + } finally { + if (is_resource($stream)) { + fclose($stream); + } } return $result ? $path : false; @@ -116,9 +119,12 @@ abstract class Driver protected function put(string $path, $contents, array $options = []) { try { - $this->writeStream($path, $contents, $options); + is_resource($contents) + ? $this->writeStream($path, $contents, $options) + : $this->write($path, $contents, $options); } catch (UnableToWriteFile|UnableToSetVisibility $e) { - return false; + Log::error('Filesystem write failed: ' . $e->getMessage()); + throw $e; } return true; }