{"id":17922690,"url":"https://github.com/overtrue/qcloud-cos-client","last_synced_at":"2025-04-04T17:07:58.264Z","repository":{"id":50756269,"uuid":"306003735","full_name":"overtrue/qcloud-cos-client","owner":"overtrue","description":"Tencent COS Client","archived":false,"fork":false,"pushed_at":"2025-02-02T03:10:04.000Z","size":156,"stargazers_count":42,"open_issues_count":1,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-28T16:08:47.559Z","etag":null,"topics":["cos-sdk","qcloud-cos","qcloud-sdk","tencent-cloud","tencent-cos"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/overtrue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["overtrue"]}},"created_at":"2020-10-21T11:35:14.000Z","updated_at":"2025-01-18T14:25:49.000Z","dependencies_parsed_at":"2024-02-17T06:30:54.697Z","dependency_job_id":"dfbca29b-8d48-49d7-b9f8-4ac9ddc5db2e","html_url":"https://github.com/overtrue/qcloud-cos-client","commit_stats":{"total_commits":63,"total_committers":6,"mean_commits":10.5,"dds":"0.11111111111111116","last_synced_commit":"7d4fe598cb81e588b7735a32762c4fa2b47f9492"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqcloud-cos-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqcloud-cos-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqcloud-cos-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fqcloud-cos-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/overtrue","download_url":"https://codeload.github.com/overtrue/qcloud-cos-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247217183,"owners_count":20903009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cos-sdk","qcloud-cos","qcloud-sdk","tencent-cloud","tencent-cos"],"created_at":"2024-10-28T20:40:26.976Z","updated_at":"2025-04-04T17:07:58.241Z","avatar_url":"https://github.com/overtrue.png","language":"PHP","funding_links":["https://github.com/sponsors/overtrue"],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://github.com/overtrue/qcloud-cos-client/workflows/Test/badge.svg\" align=\"right\" /\u003e\n\n\u003ch1 align=\"center\"\u003eQCloud COS Client\u003c/h1\u003e\n\n对象存储（Cloud Object Storage，COS）是腾讯云提供的一种存储海量文件的分布式存储服务，具有高扩展性、低成本、可靠安全等优点。通过控制台、API、SDK 和工具等多样化方式，用户可简单、快速地接入 COS，进行多格式文件的上传、下载和管理，实现海量数据存储和管理。\n\n\u003e :star: 官方文档：https://cloud.tencent.com/document/product/436\n\n[![Sponsor me](https://github.com/overtrue/overtrue/blob/master/sponsor-me-button-s.svg?raw=true)](https://github.com/sponsors/overtrue)\n\n## 安装\n\n环境要求：\n\n- PHP \u003e= 8.0\n- ext-libxml\n- ext-simplexml\n- ext-json\n- ext-dom\n\n```shell\n$ composer require overtrue/qcloud-cos-client -vvv\n```\n\n## 配置\n\n配置前请了解官方名词解释：[文档中心 \u003e 对象存储 \u003e API 文档 \u003e 简介：术语信息](https://cloud.tencent.com/document/product/436/7751#.E6.9C.AF.E8.AF.AD.E4.BF.A1.E6.81.AF)\n\n```php\n$config = [\n    // 必填，app_id、secret_id、secret_key \n    // 可在个人秘钥管理页查看：https://console.cloud.tencent.com/capi\n    'app_id' =\u003e 10020201024, \n    'secret_id' =\u003e 'AKIDsiQzQla780mQxLLU2GJCxxxxxxxxxxx', \n    'secret_key' =\u003e 'b0GMH2c2NXWKxPhy77xhHgwxxxxxxxxxxx',\n    \n    // 可选(批量处理接口必填)，腾讯云账号 ID\n    // 可在腾讯云控制台账号信息中查看：https://console.cloud.tencent.com/developer\n    'uin' =\u003e '10000*******', \n    \n    // 可选，地域列表请查看 https://cloud.tencent.com/document/product/436/6224\n    'region' =\u003e 'ap-guangzhou', \n\n    // 可选，仅在调用不同的接口时按场景必填\n    'bucket' =\u003e 'example', // 使用 Bucket 接口时必填\n    \n    // 可选，签名有效期，默认 60 分钟\n    'signature_expires' =\u003e '+60 minutes', \n    \n    // 可选，guzzle 配置\n    // 参考：https://docs.guzzlephp.org/en/7.0/request-options.html\n    'guzzle' =\u003e [\n        // ...\n    ],\n];\n```\n\n## 使用\n\n您可以分两种方式使用此 SDK：\n\n- **ServiceClient、BucketClient、ObjectClient、JobClient** - 封装了具体 API 的类调用指定业务的 API。\n- **Client** - 基于最基础的 HTTP 类封装调用 COS 全部 API。\n\n在使用前我们强烈建议您仔细阅读[官方 API 文档](https://cloud.tencent.com/document/product/436)，以减少不必要的时间浪费。\n\n### 返回值\n\n所有的接口调用都会返回 [`Overtrue\\CosClient\\Http\\Response`](https://github.com/overtrue/qcloud-cos-client/blob/master/src/Http/Response.php) 对象，该对象提供了以下便捷方法：\n\n```php\narray|null $response-\u003etoArray(); // 获取响应内容数组转换结果                                                \nobject $response-\u003etoObject(); // 获取对象格式的返回值\nbool $response-\u003eisXML(); // 检测返回内容是否为 XML\nstring $response-\u003egetContents(); // 获取原始返回内容\n```\n\n你也可以直接把 `$response` 当成数组访问：`$response['ListBucketResult']`\n\n## ServiceClient\n\n```php\nuse Overtrue\\CosClient\\ServiceClient;\n\n$config = [\n    // 请参考配置说明\n];\n$service = new ServiceClient($config);\n\n$service-\u003egetBuckets();\n$service-\u003egetBuckets('ap-guangzhou');\n```\n\n## JobClient\n\n```php\nuse Overtrue\\CosClient\\JobClient;\n\n$config = [\n    // 请参考配置说明\n];\n\n$job = new JobClient($config);\n\n## API\n\n$job-\u003egetJobs(array $query = []);\n$job-\u003ecreateJob(array $body);\n$job-\u003edescribeJob(string $id);\n$job-\u003eupdateJobPriority(string $id, int $priority);\n$job-\u003eupdateJobStatus(string $id, array $query);\n```\n\n## BucketClient\n\n```php\nuse Overtrue\\CosClient\\BucketClient;\n\n$config = [\n    // 请参考配置说明\n    'bucket' =\u003e 'example',\n    'region' =\u003e 'ap-guangzhou',\n];\n\n$bucket = new BucketClient($config);\n\n## API\n\n$bucket-\u003eputBucket(array $body); \n$bucket-\u003eheadBucket(); \n$bucket-\u003edeleteBucket();\n$bucket-\u003egetObjects(array $query = []);\n$bucket-\u003egetObjectVersions(array $query = []);\n\n// Versions\n$bucket-\u003eputVersions(array $body);\n$bucket-\u003egetVersions();\n\n// ACL\n$bucket-\u003eputACL(array $body, array $headers = [])\n$bucket-\u003egetACL();\n\n// CORS\n$bucket-\u003eputCORS(array $body);\n$bucket-\u003egetCORS();\n$bucket-\u003edeleteCORS();\n\n// Lifecycle\n$bucket-\u003eputLifecycle(array $body);\n$bucket-\u003egetLifecycle();\n$bucket-\u003edeleteLifecycle();\n\n// Policy\n$bucket-\u003eputPolicy(array $body);\n$bucket-\u003egetPolicy();\n$bucket-\u003edeletePolicy();\n\n// Referer\n$bucket-\u003eputReferer(array $body);\n$bucket-\u003egetReferer();\n\n// Taging\n$bucket-\u003eputTaging(array $body);\n$bucket-\u003egetTaging();\n$bucket-\u003edeleteTaging();\n\n// Website\n$bucket-\u003eputWebsite(array $body);\n$bucket-\u003egetWebsite();\n$bucket-\u003edeleteWebsite();\n\n// Inventory\n$bucket-\u003eputInventory(string $id, array $body)\n$bucket-\u003egetInventory(string $id)\n$bucket-\u003egetInventoryConfigurations(?string $nextContinuationToken = null)\n$bucket-\u003edeleteInventory(string $id)\n\n// Versioning\n$bucket-\u003eputVersioning(array $body);\n$bucket-\u003egetVersioning();\n\n// Replication\n$bucket-\u003eputReplication(array $body);\n$bucket-\u003egetReplication();\n$bucket-\u003edeleteReplication();\n\n// Logging\n$bucket-\u003eputLogging(array $body);\n$bucket-\u003egetLogging();\n\n// Accelerate\n$bucket-\u003eputAccelerate(array $body);\n$bucket-\u003egetAccelerate();\n\n// Encryption\n$bucket-\u003eputEncryption(array $body);\n$bucket-\u003egetEncryption();\n$bucket-\u003edeleteEncryption();\n```\n\n## ObjectClient\n\n```php\nuse Overtrue\\CosClient\\ObjectClient;\n\n$config = [\n    // 请参考配置说明\n    'bucket' =\u003e 'example',\n    'region' =\u003e 'ap-guangzhou',\n]);\n\n$object = new ObjectClient($config);\n\n$object-\u003eputObject(string $key, string $body, array $headers = []);\n$object-\u003ecopyObject(string $key, array $headers = []);\n$object-\u003egetObject(string $key, array $query = [], array $headers = []);\n$object-\u003eheadObject(string $key, string $versionId, array $headers = []);\n$object-\u003erestoreObject(string $key, string $versionId, array $body);\n$object-\u003eselectObjectContents(string $key, array $body);\n$object-\u003edeleteObject(string $key, string $versionId);\n$object-\u003edeleteObjects(array $body);\n\n$object-\u003eputObjectACL(string $key, array $body, array $headers = []);\n$object-\u003egetObjectACL(string $key);\n\n$object-\u003eputObjectTagging(string $key, string $versionId, array $body);\n$object-\u003egetObjectTagging(string $key, string $versionId);\n$object-\u003edeleteObjectTagging(string $key, string $versionId);\n\n$object-\u003ecreateUploadId(string $key, array $headers = []);\n$object-\u003eputPart(string $key, int $partNumber, string $uploadId, string $body, array $headers = []);\n$object-\u003ecopyPart(string $key, int $partNumber, string $uploadId, array $headers = []);\n$object-\u003emarkUploadAsCompleted(string $key, string $uploadId, array $body);\n$object-\u003emarkUploadAsAborted(string $key, string $uploadId);\n$object-\u003egetUploadJobs(array $query = []);\n$object-\u003egetUploadedParts(string $key, string $uploadId, array $query = []);\n\n$object-\u003egetObjectUrl(string $key)\n$object-\u003egetObjectSignedUrl(string $key, string $expires = '+60 minutes')\n```\n\n## 异常处理\n\n```php\nuse Overtrue\\CosClient\\BucketClient;\n\n$client = new BucketClient([\n    'app_id' =\u003e 123456789,\n    'secret_id' =\u003e 'AKIDsiQzQla780mQxLLUxxxxxxx',\n    'secret_key' =\u003e 'b0GMH2c2NXWKxPhy77xxxxxxxx',\n    'region' =\u003e 'ap-guangzhou',\n    'bucket' =\u003e 'example',\n]);\n\ntry {\n    $client-\u003egetObjects();\n} catch(\\Throwable $e) {\n    var_dump($e-\u003egetResponse()-\u003etoArray());     \n}\n```\n\n其中 `$e-\u003egetResponse()` 为 `\\Overtrue\\CosClient\\Http\\Response` 示例，你也可以通过 `$e-\u003egetRequest()` 获取请求对象。\n\n## 测试\n\n你可以使用类提供的 `spy` 方法来创建一个测试对象：\n\n```php\n\nuse Overtrue\\CosClient\\Http\\Response;\nuse Overtrue\\CosClient\\ServiceClient;\n\n$service = ServiceClient::spy();\n\n$mockResponse = Response::create(200, [], '\u003cListAllMyBucketsResult\u003e\n                                               \u003cBuckets\u003e\n                                                   \u003cBucket\u003e\n                                                       \u003cName\u003eexamplebucket1-1250000000\u003c/Name\u003e\n                                                       \u003cLocation\u003eap-beijing\u003c/Location\u003e\n                                                       \u003cCreationDate\u003e2019-05-24T11:49:50Z\u003c/CreationDate\u003e\n                                                   \u003c/Bucket\u003e\n                                               \u003c/Buckets\u003e\n                                          \u003c/ListAllMyBucketsResult\u003e');\n\n$service-\u003eshouldReceive('listBuckets')\n        -\u003ewith('zp-guangzhou')\n        -\u003eonce()\n        -\u003eandReturn($mockResponse);\n```\n\n更多测试写法请阅读：[Mockery 官方文档](http://docs.mockery.io/en/latest/index.html)\n\n## :heart: Sponsor me \n\n[![Sponsor me](https://github.com/overtrue/overtrue/blob/master/sponsor-me.svg?raw=true)](https://github.com/sponsors/overtrue)\n\n如果你喜欢我的项目并想支持它，[点击这里 :heart:](https://github.com/sponsors/overtrue)\n\n\n## Project supported by JetBrains\n\nMany thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.\n\n[![](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/?from=https://github.com/overtrue)\n\n## Contributing\n\nYou can contribute in one of three ways:\n\n1. File bug reports using the [issue tracker](https://github.com/vendor/package/issues).\n2. Answer questions or fix bugs on the [issue tracker](https://github.com/vendor/package/issues).\n3. Contribute new features or update the wiki.\n\n_The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable._\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovertrue%2Fqcloud-cos-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovertrue%2Fqcloud-cos-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovertrue%2Fqcloud-cos-client/lists"}