{"id":36992393,"url":"https://github.com/consatan/weibo_image_uploader","last_synced_at":"2026-01-13T23:44:33.632Z","repository":{"id":56957426,"uuid":"81410045","full_name":"consatan/weibo_image_uploader","owner":"consatan","description":"PHP 实现的微博图床上传轮子","archived":false,"fork":false,"pushed_at":"2018-02-11T05:28:13.000Z","size":88,"stargazers_count":128,"open_issues_count":1,"forks_count":19,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-04T19:12:35.933Z","etag":null,"topics":["image","imgbed","php","picbed","picture","sina","uploader","weibo"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/consatan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-09T04:45:51.000Z","updated_at":"2025-08-26T08:09:23.000Z","dependencies_parsed_at":"2022-08-21T08:50:33.982Z","dependency_job_id":null,"html_url":"https://github.com/consatan/weibo_image_uploader","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/consatan/weibo_image_uploader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consatan%2Fweibo_image_uploader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consatan%2Fweibo_image_uploader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consatan%2Fweibo_image_uploader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consatan%2Fweibo_image_uploader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/consatan","download_url":"https://codeload.github.com/consatan/weibo_image_uploader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consatan%2Fweibo_image_uploader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28405190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T21:51:37.118Z","status":"ssl_error","status_checked_at":"2026-01-13T21:45:14.585Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["image","imgbed","php","picbed","picture","sina","uploader","weibo"],"created_at":"2026-01-13T23:44:33.561Z","updated_at":"2026-01-13T23:44:33.618Z","avatar_url":"https://github.com/consatan.png","language":"PHP","readme":"### PHP 实现的微博图床上传轮子\n\n#### 安装\n\n##### 要求\n\n- PHP 7.0 以上版本\n- json 扩展\n- openssl 扩展\n\nPHP **5.5, 5.6** 版本请使用 [0.5 版本](https://github.com/consatan/weibo_image_uploader/tree/0.5)\n\n使用 composer (推荐)\n\n```shell\ncomposer require consatan/weibo_image_uploader\n```\n\n从 Github 上下载\n\n```shell\ngit clone https://consatan.github.com/weibo_image_uploader.git\n```\n\n#### 使用示例\n\n```php\n\u003c?php\n// 引入 composer autoload\nrequire './vendor/autoload.php';\n\n$weibo = new Consatan\\Weibo\\ImageUploader\\Client();\n\n// 默认返回的是 https 协议的图床 URL，调用该方法返回的是 http 协议的图床 URL\n// $weibo-\u003euseHttps(false);\n\n// 上传示例图片\n$url = $weibo-\u003eupload('./example.jpg', '微博帐号', '微博帐号密码');\n\n// 输出新浪图床 URL\necho $url . PHP_EOL;\n```\n\n#### 使用说明\n\n构造函数可传递 `\\Psr\\Cache\\CacheItemPoolInterface` 和 `\\GuzzleHttp\\ClientInterface`，默认情况下使用文件缓存 cookie 信息，存储在项目根目录的 cache/weibo 文件夹下，缓存的 `key` 使用 `md5` 后的微博用户名，可根据需求将缓存保存到其他适配器中，具体参见 `\\Symfony\\Cache\\Adapter`。\n\n\u003e 关于验证码问题([issue #3](https://github.com/consatan/weibo_image_uploader/issues/3))，可查看 [example/cli.php](https://github.com/consatan/weibo_image_uploader/tree/master/example/cli.php) 示例代码\n\n`Client::upload` 方法的第四个参数允许传递 `Guzzle request` 的参数数组，具体见 [Request Options](http://docs.guzzlephp.org/en/latest/request-options.html)，通过该参数可实现切换代理等操作，如下例：\n\n```php\n\u003c?php\n\n// 文件路径\n$url1 = $weibo-\u003eupload('./example.jpg', '微博帐号1', '密码');\n// 同一用户名只有第一次上传需要登入，之后使用缓存的登入 cookie 进行上传\n// 如果使用 cookie 上传失败，将尝试重新登入一次，还是失败的话抛出异常\n// 除非使用的是无法持久化保存的缓存适配器(如 ArrayAdapter)\n// 否则以后同一用户名都将使用缓存的 cookie 进行登入\n// echo $weibo-\u003eupload('./example.jpg', '微博帐号1', '密码');\n\n// resource\n$url2 = $weibo-\u003eupload(fopen('./example.jpg', 'r'), '微博帐号2', '密码', [\n    'proxy' =\u003e 'http://192.168.1.100:8080'\n]);\n\n// 字符串\n$url3 = $weibo-\u003eupload(file_get_contents('./example.jpg'), '微博帐号3', '密码', [\n    'proxy' =\u003e 'http://192.168.1.200:8090'\n]);\n\n// \\Psr\\Http\\Message\\StreamInterface\n$url4 = $weibo-\u003eupload(\\GuzzleHttp\\Psr7\\stream_for(file_get_contents('./example.jpg')), '微博帐号4', '密码', [\n    'proxy' =\u003e 'http://192.168.1.250:9080'\n]);\n```\n\n##### 水印选项\n```php\n// 开启水印\n$url = $weibo-\u003eupload('./example.jpg', '微博帐号', '密码', ['mark' =\u003e true]);\n\n// 水印位置\n$url = $weibo-\u003eupload('./example.jpg', '微博帐号', '密码', [\n    'mark' =\u003e true,\n    'markpos' =\u003e Consatan\\Weibo\\ImageUploader\\Client::MARKPOS_BOTTOM_CENTER,\n]);\n\n// 可使用任意的水印暱称（也许以后的版本就会和谐了）\n$url = $weibo-\u003eupload('./example.jpg', '微博帐号', '密码', ['mark' =\u003e true, 'nickname' =\u003e '任意暱称']);\n```\n\n##### 获取其他尺寸的图片链接\n```php\n// 默认使用 large (原始)尺寸，此处使用 thumbnail (缩略图) 尺寸\n$url = $weibo-\u003eupload('./example.jpg', '微博帐号', '密码', [\n    'size' =\u003e Consatan\\Weibo\\ImageUploader\\Client::IMAGE_SIZE_THUMBNAIL\n]);\n\n// 获取多个尺寸的图片链接\n$urls = $weibo-\u003eupload('./example.jpg', '微博帐号', '密码', ['size' =\u003e [\n    Consatan\\Weibo\\ImageUploader\\Client::IMAGE_SIZE_SMALL,\n    Consatan\\Weibo\\ImageUploader\\Client::IMAGE_SIZE_LARGE,\n    Consatan\\Weibo\\ImageUploader\\Client::IMAGE_SIZE_THUMBNAIL,\n]]);\n// 返回\n// array (\n//   'small' =\u003e 'https://ws2.sinaimg.cn/small/0068M0xKgy1fetd4l7x6vj30bo0bximx.jpg',\n//   'large' =\u003e 'https://ws2.sinaimg.cn/large/0068M0xKgy1fetd4l7x6vj30bo0bximx.jpg',\n//   'thumbnail' =\u003e 'https://ws2.sinaimg.cn/thumbnail/0068M0xKgy1fetd4l7x6vj30bo0bximx.jpg',\n// )\n```\n\n##### upload 方法中，$config 和 $option 参数位置可调换\n```php\n// 以下 2 种传参顺序最终效果是一致的\n$url = $weibo-\u003eupload('./example.jpg', '微博帐号', '密码', [\n    'size' =\u003e Consatan\\Weibo\\ImageUploader\\Client::IMAGE_SIZE_THUMBNAIL\n], [\n    'proxy' =\u003e 'http://192.168.1.250:9080'\n]);\n\n$url = $weibo-\u003eupload('./example.jpg', '微博帐号', '密码', [\n    'proxy' =\u003e 'http://192.168.1.250:9080'\n], [\n    'size' =\u003e Consatan\\Weibo\\ImageUploader\\Client::IMAGE_SIZE_THUMBNAIL\n]);\n```\n\n抛出的所有异常都可通过 `\\Consatan\\Weibo\\ImageUploader\\Exception\\ImageUploaderException` 接口捕获， 实现该接口的异常都在 [src/Exception](https://github.com/consatan/weibo_image_uploader/tree/master/src/Exception) 目录下。\n\n#### Todo\n\n- [ ] 单元测试\n- [x] 获取其他规格的图片 URL（如，small, thumbnail...）\n- [x] 添加水印选项\n- [x] 实现验证码输入(用户输入)\n\n#### 参考\n\n- [微博官方简易发布器](http://weibo.com/minipublish)\n- [微博官方图片上传js](http://js.t.sinajs.cn/t5/home/js/page/content/simplePublish.js)\n- [WeiboPicBed](https://github.com/Suxiaogang/WeiboPicBed/blob/master/js/popup.js)\n- [超详细的Python实现新浪微博模拟登陆(小白都能懂)](http://www.jianshu.com/p/816594c83c74)\n- [调用网页接口实现发微博（PHP实现）](http://andrewyang.cn/post.php?id=1034)\n- [weibo-publisher](https://github.com/yangyuan/weibo-publisher)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsatan%2Fweibo_image_uploader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconsatan%2Fweibo_image_uploader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsatan%2Fweibo_image_uploader/lists"}