alphasnow/aliyun-oss-appserver
Composer 安装命令:
composer require alphasnow/aliyun-oss-appserver
包简介
upload data to OSS through web applications
关键字:
README 文档
README
English | 简体中文
AliYun OSS AppServer
Upload data to OSS through Web applications. Add signatures on the server, configure upload callback, and directly transfer data.
Installation
composer require alphasnow/aliyun-oss-appserver
Configuration
Modify the environment file .env
OSS_ACCESS_KEY_ID=<Your aliyun accessKeyId, Required, Example: LT************Hz> OSS_ACCESS_KEY_SECRET=<Your aliyun accessKeySecret, Required, Example: Q5**************************PD> OSS_BUCKET=<Your oss bucket name, Required, Example: x-storage> OSS_ENDPOINT=<Your oss endpoint domain, Required, Example: oss-cn-hangzhou.aliyuncs.com> OSS_SSL=<Whether to use ssl, Optional, Example: true> OSS_DOMAIN=<Domain name addresses, Optional, Example: x-storage.domain.com> OSS_CALLBACK_URL=<Default callback address, Optional, Example: https://api.domain.com/callback> OSS_POLICY_MAX_SIZE=<Default maximum file size 1GB, Optional, Example: 1048576000> OSS_POLICY_EXPIRE_TIME=<Default expiration time 1 hour, Optional, Example: 3600> OSS_POLICY_USER_DIR=<Default Upload Directory upload/, Optional, Example: upload/>
(Optional) Modify the config file config/oss-appserver.php
php artisan vendor:publish --provider=AlphaSnow\OSS\AppServer\Laravel\ServiceProvider
Usage
OSS configuration
- CORS configuration / Create rule / Example:
Soucre: *, Allow Methods: POST
Laravel server
Add route routes/api.php, Use the default controller.
Route::get("app-server/oss-token", "\AlphaSnow\OSS\AppServer\Laravel\ServerController@token"); Route::post("app-server/oss-callback", "\AlphaSnow\OSS\AppServer\Laravel\ServerController@callback");
Web client
- Download https://www.alibabacloud.com/help/en/object-storage-service/latest/add-signatures-on-the-client-by-using-javascript-and-upload-data-to-oss#title-l7m-nho-uap
- Find line 30 of
upload.jsand change it to the actual server address, example:http://laravel.local// serverUrl = "http://88.88.88.88:8888" serverUrl = "http://laravel.local/api/app-server/oss-token"
Examples
Use js client to upload file
Example of single-file services with clients
Use curl to upload file
- Get the token
{ "accessid": "access_key_id", "host": "https://bucket.endpoint.com", "policy": "eyJleHBpcmF0aW9uIjoiMjAyMi0wMy0yMVQwODoyNzoxNi4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJ1cGxvYWRcLyJdXX0=", "signature": "P2qcKX8/CKiCzEiDh6CE02HoTRk=", "expire": 1647851236, "callback": "eyJjYWxsYmFja1VybCI6Imh0dHA6XC9cL2RvbWFpbi5jb21cL2NhbGxiYWNrIiwiY2FsbGJhY2tCb2R5IjoiZmlsZW5hbWU9JHtvYmplY3R9JnNpemU9JHtzaXplfSZtaW1lVHlwZT0ke21pbWVUeXBlfSZoZWlnaHQ9JHtpbWFnZUluZm8uaGVpZ2h0fSZ3aWR0aD0ke2ltYWdlSW5mby53aWR0aH0iLCJjYWxsYmFja0JvZHlUeXBlIjoiYXBwbGljYXRpb25cL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9", "dir": "upload/" } - Upload file
curl --location "https://bucket.endpoint.com" \ --form 'key="upload/${filename}"' \ --form 'policy="eyJleHBpcmF0aW9uIjoiMjAyMi0wMy0yMVQwODoyNzoxNi4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF0sWyJzdGFydHMtd2l0aCIsIiRrZXkiLCJ1cGxvYWRcLyJdXX0="' \ --form 'OSSAccessKeyId="access_key_id"' \ --form 'success_action_status="200"' \ --form 'callback="eyJjYWxsYmFja1VybCI6Imh0dHA6XC9cL2RvbWFpbi5jb21cL2NhbGxiYWNrIiwiY2FsbGJhY2tCb2R5IjoiZmlsZW5hbWU9JHtvYmplY3R9JnNpemU9JHtzaXplfSZtaW1lVHlwZT0ke21pbWVUeXBlfSZoZWlnaHQ9JHtpbWFnZUluZm8uaGVpZ2h0fSZ3aWR0aD0ke2ltYWdlSW5mby53aWR0aH0iLCJjYWxsYmFja0JvZHlUeXBlIjoiYXBwbGljYXRpb25cL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9"' \ --form 'signature="P2qcKX8/CKiCzEiDh6CE02HoTRk="' \ --form 'file=@"~/Downloads/image.jpg"'
Dynamic configuration
use AlphaSnow\OSS\AppServer\Factory; $token = (new Factory($config))->makeToken(); // Change the address of the direct transmission server $token->access()->setOssHost("https://bucket.endpoint.com"); // Change the upload directory/timeout period to 60 seconds/maximum file limit to 500 MB $token->policy()->setUserDir("upload/")->setExpireTime(60)->setMaxSize(500*1024*1024); // Change the callback address/callback body/callback header $token->callback()->setCallbackUrl("http://domain.com/oss-callback") ->setCallbackBody("filename=\${object}&size=\${size}&mimeType=\${mimeType}&height=\${imageInfo.height}&width=\${imageInfo.width}") ->setCallbackBodyType("application/x-www-form-urlencoded");
Ali document
alphasnow/aliyun-oss-appserver 适用场景与选型建议
alphasnow/aliyun-oss-appserver 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10.14k 次下载、GitHub Stars 达 11, 最近一次更新时间为 2022 年 03 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「appserver」 「laravel」 「oss」 「aliyun」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 alphasnow/aliyun-oss-appserver 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 alphasnow/aliyun-oss-appserver 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 alphasnow/aliyun-oss-appserver 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A PHP SNMP library for people who hate SNMP, MIBs and OIDs!
Application server in PHP
This is a Flysystem adapter for the Aliyun OSS.
An minimal app http server based on PHP cli-server for use in tests
Stripped down appserver.io version providing a nodejs like handling
Alfabank REST API integration
统计信息
- 总下载量: 10.14k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 13
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-03-22