config('filesystems.disks.cos.region'), 'credentials' => [ 'secretId' => config('filesystems.disks.cos.secret_id'), 'secretKey' => config('filesystems.disks.cos.secret_key') ] ]); try { $notUploadedSize = $file->getSize(); $options = [ 'PartSize' => 1 * 1024 * 1024, 'Progress' => function ($totalSize, $uploadedSize) use (&$notUploadedSize, $progressBar) { $partSize = $uploadedSize - ($totalSize - $notUploadedSize); $notUploadedSize = $totalSize - $uploadedSize; $progressBar?->increment($partSize); }, 'ACL' => 'private', ]; $cosClient->upload( sprintf("%s-%s", config('filesystems.disks.cos.bucket'), config('filesystems.disks.cos.app_id')), $pathname, fopen($file->getRealPath(), 'rb'), $options, ); if ($notUploadedSize > 0) { $progressBar?->increment($notUploadedSize); } } catch (\Exception $exception) { Log::error($exception->getTraceAsString()); throw new UploadFailedException("File upload failed."); } return $pathname; } }