{"id":23899291,"url":"https://github.com/alphasnow/aliyun-oss-appserver","last_synced_at":"2025-04-10T18:12:03.541Z","repository":{"id":38229945,"uuid":"472173186","full_name":"alphasnow/aliyun-oss-appserver","owner":"alphasnow","description":"Aliyun oss signature direct transmission. 阿里云服务端签名直传OSS扩展包.","archived":false,"fork":false,"pushed_at":"2024-12-05T10:31:16.000Z","size":357,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"1.x","last_synced_at":"2025-03-24T15:52:20.361Z","etag":null,"topics":["aliyun","aliyun-oss","aliyun-oss-appserver","aliyun-sdk","appserver","laravel-package","oss"],"latest_commit_sha":null,"homepage":"https://alphasnow.github.io/aliyun-oss-appserver/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alphasnow.png","metadata":{"files":{"readme":"README-CN.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-21T03:26:52.000Z","updated_at":"2024-12-26T10:57:01.000Z","dependencies_parsed_at":"2024-07-30T17:58:23.168Z","dependency_job_id":"1fc79a79-655e-4f72-acce-e990c8141b8b","html_url":"https://github.com/alphasnow/aliyun-oss-appserver","commit_stats":{"total_commits":52,"total_committers":2,"mean_commits":26.0,"dds":"0.019230769230769273","last_synced_commit":"63323b1f4494bd7f00b9b4df1a5490013de119c9"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphasnow%2Faliyun-oss-appserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphasnow%2Faliyun-oss-appserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphasnow%2Faliyun-oss-appserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphasnow%2Faliyun-oss-appserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alphasnow","download_url":"https://codeload.github.com/alphasnow/aliyun-oss-appserver/tar.gz/refs/heads/1.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248268969,"owners_count":21075704,"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":["aliyun","aliyun-oss","aliyun-oss-appserver","aliyun-sdk","appserver","laravel-package","oss"],"created_at":"2025-01-04T18:17:14.227Z","updated_at":"2025-04-10T18:12:03.522Z","avatar_url":"https://github.com/alphasnow.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[English](README.md) | 简体中文  \n\n# AliYun OSS AppServer\n![aliyun-oss-appserver](https://socialify.git.ci/alphasnow/aliyun-oss-appserver/image?description=1\u0026language=1\u0026name=1\u0026owner=1\u0026pattern=Plus\u0026theme=Auto)\n\nWeb端直接上传数据至OSS, 服务端签名直传并设置上传回调.\n\n[![Latest Stable Version](https://poser.pugx.org/alphasnow/aliyun-oss-appserver/v/stable)](https://packagist.org/packages/alphasnow/aliyun-oss-appserver)\n[![Total Downloads](https://poser.pugx.org/alphasnow/aliyun-oss-appserver/downloads)](https://packagist.org/packages/alphasnow/aliyun-oss-appserver)\n[![License](https://poser.pugx.org/alphasnow/aliyun-oss-appserver/license)](https://packagist.org/packages/alphasnow/aliyun-oss-appserver)\n[![Tests](https://github.com/alphasnow/aliyun-oss-appserver/actions/workflows/tests.yml/badge.svg?branch=1.x)](https://github.com/alphasnow/aliyun-oss-appserver/actions/workflows/tests.yml)\n\n## 安装依赖\n```bash\ncomposer require alphasnow/aliyun-oss-appserver\n```\n\n## 服务配置\n修改环境配置 `.env`\n```env\nOSS_ACCESS_KEY_ID=\u003c必填, 阿里云的AccessKeyId, 示例: LT************Hz\u003e\nOSS_ACCESS_KEY_SECRET=\u003c必填, 阿里云的AccessKeySecret, 示例: Q5**************************PD\u003e\nOSS_BUCKET=\u003c必填, 对象存储的Bucket, 示例: x-storage\u003e\nOSS_ENDPOINT=\u003c必填, 对象存储的Endpoint, 示例: oss-cn-hangzhou.aliyuncs.com\u003e\nOSS_SSL=\u003c选填, 是否使用SSL, 示例: true\u003e\nOSS_DOMAIN=\u003c选填, 域名地址, 示例: x-storage.domain.com\u003e\nOSS_CALLBACK_URL=\u003c选填, 默认回调地址, 示例: https://api.domain.com/callback\u003e\nOSS_POLICY_MAX_SIZE=\u003c选填, 默认最大文件大小1GB, 示例: 1048576000\u003e\nOSS_POLICY_EXPIRE_TIME=\u003c选填, 默认过期时间1小时, 示例: 3600\u003e\nOSS_POLICY_USER_DIR=\u003c选填, 默认上传目录upload/, 示例: upload/\u003e\n```\n\n(可选) 修改配置文件 `config/oss-appserver.php`\n```bash\nphp artisan vendor:publish --provider=AlphaSnow\\OSS\\AppServer\\Laravel\\ServiceProvider\n```\n\n## 快速使用\n### OSS 配置\n- 跨域设置 / 创建规则 / 示例: `来源:*, 允许 Methods:POST`\n\n### Laravel服务端\n添加路由`routes/api.php`, 使用默认控制器.\n```php\nRoute::get(\"app-server/oss-token\", \"\\AlphaSnow\\OSS\\AppServer\\Laravel\\ServerController@token\");\nRoute::post(\"app-server/oss-callback\", \"\\AlphaSnow\\OSS\\AppServer\\Laravel\\ServerController@callback\");\n```\n\n### Web客户端\n1. 下载 [https://help.aliyun.com/document_detail/31927.html#section-kx3-tsk-gfb](https://help.aliyun.com/document_detail/31927.html#section-kx3-tsk-gfb)\n2. 找到`upload.js`的第30行代码,修改为实际服务器地址, 示例: `http://laravel.local`\n    ```js\n    // serverUrl = \"http://88.88.88.88:8888\"\n    serverUrl = \"http://laravel.local/api/app-server/oss-token\"\n    ```\n\n## 示例\n### 使用JS客户端上传文件\n[单文件服务与客户端的示例](examples)\n\n### 使用CURL上传文件\n1. 获取授权\n    ```json\n    {\n        \"accessid\": \"access_key_id\",\n        \"host\": \"https://bucket.endpoint.com\",\n        \"policy\": \"eyJleHBpcmF0aW9uIjoiMjAyMi0wMy0yMVQwODoyNzoxNi4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJ1cGxvYWRcLyJdXX0=\",\n        \"signature\": \"P2qcKX8/CKiCzEiDh6CE02HoTRk=\",\n        \"expire\": 1647851236,\n        \"callback\": \"eyJjYWxsYmFja1VybCI6Imh0dHA6XC9cL2RvbWFpbi5jb21cL2NhbGxiYWNrIiwiY2FsbGJhY2tCb2R5IjoiZmlsZW5hbWU9JHtvYmplY3R9JnNpemU9JHtzaXplfSZtaW1lVHlwZT0ke21pbWVUeXBlfSZoZWlnaHQ9JHtpbWFnZUluZm8uaGVpZ2h0fSZ3aWR0aD0ke2ltYWdlSW5mby53aWR0aH0iLCJjYWxsYmFja0JvZHlUeXBlIjoiYXBwbGljYXRpb25cL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9\",\n        \"dir\": \"upload/\"\n    }\n    ```\n2. 上传文件\n    ```bash\n    curl --location \"https://bucket.endpoint.com\" \\\n    --form 'key=\"upload/${filename}\"' \\\n    --form 'policy=\"eyJleHBpcmF0aW9uIjoiMjAyMi0wMy0yMVQwODoyNzoxNi4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJ1cGxvYWRcLyJdXX0=\"' \\\n    --form 'OSSAccessKeyId=\"access_key_id\"' \\\n    --form 'success_action_status=\"200\"' \\\n    --form 'callback=\"eyJjYWxsYmFja1VybCI6Imh0dHA6XC9cL2RvbWFpbi5jb21cL2NhbGxiYWNrIiwiY2FsbGJhY2tCb2R5IjoiZmlsZW5hbWU9JHtvYmplY3R9JnNpemU9JHtzaXplfSZtaW1lVHlwZT0ke21pbWVUeXBlfSZoZWlnaHQ9JHtpbWFnZUluZm8uaGVpZ2h0fSZ3aWR0aD0ke2ltYWdlSW5mby53aWR0aH0iLCJjYWxsYmFja0JvZHlUeXBlIjoiYXBwbGljYXRpb25cL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9\"' \\\n    --form 'signature=\"P2qcKX8/CKiCzEiDh6CE02HoTRk=\"' \\\n    --form 'file=@\"~/Downloads/image.jpg\"'\n    ```\n\n### 动态配置\n```php\nuse AlphaSnow\\OSS\\AppServer\\Factory;\n\n$token = (new Factory($config))-\u003emakeToken();\n\n// 修改直传服务器地址\n$token-\u003eaccess()-\u003esetOssHost(\"https://bucket.endpoint.com\");\n\n// 修改上传目录/超时时间60秒/最大文件限制500M\n$token-\u003epolicy()-\u003esetUserDir(\"upload/\")-\u003esetExpireTime(60)-\u003esetMaxSize(500*1024*1024);\n\n// 修改回调地址/回调数据/回调请求头\n$token-\u003ecallback()-\u003esetCallbackUrl(\"http://domain.com/callback\")\n    -\u003esetCallbackBody(\"filename=\\${object}\u0026size=\\${size}\u0026mimeType=\\${mimeType}\u0026height=\\${imageInfo.height}\u0026width=\\${imageInfo.width}\")\n    -\u003esetCallbackBodyType(\"application/x-www-form-urlencoded\");\n```\n\n## 阿里云文档\n\u003e https://help.aliyun.com/document_detail/31927.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falphasnow%2Faliyun-oss-appserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falphasnow%2Faliyun-oss-appserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falphasnow%2Faliyun-oss-appserver/lists"}