[扩展推荐]阿里云OSS直传服务端签名扩展包
阿里云OSS直传服务端签名扩展包
客户端获取TOKEN后,直接将文件上传至OSS,而不再需要后端中转.
仓库地址
Gitee gitee.com/shanyu/aliyun-oss-appser...
Github github.com/alphasnow/aliyun-oss-ap...
安装依赖
composer require alphasnow/aliyun-oss-appserver
快速使用
Laravel服务端
添加路由routes/api.php
Route::get("app-server/token","AppSeverController@token");
Route::post("app-server/callback","AppSeverController@callback")->name("app-server.callback");
添加控制器app/Http/controllers/AppSeverController.php
namespace App\Http\Controllers;
use AlphaSnow\OSS\AppServer\Token;
use AlphaSnow\OSS\AppServer\LaravelCacheCallback;
class AppSeverController
{
public function token(){
$token = app(Token::class);
// 根据需求动态配置
// $token->callback()->setCallbackUrl(route("app-server.callback"));
return response()->json($token->response());
}
public function callback(){
$status = app(LaravelCacheCallback::class)->verifyByRequest();
if ($status == false) {
return response()->json(["status" => "fail"],403);
}
// 默认回调参数: filename, size, mimeType, height, width
// $filename = request()->post("filename");
return response()->json(["status" => "ok"]);
}
}
动态配置
// 修改直传服务器地址
$token->access()->setOssHost("https://bucket.endpoint.com");
// 修改上传目录/超时时间60秒/最大文件限制500M
$token->policy()->setUserDir("upload/")->setExpireTime(60)->setMaxSize(500*1024*1024);
// 修改回调地址/回调数据/回调请求头
$token->callback()->setCallbackUrl("http://domain.com/callback")
->setCallbackBody("filename=\${object}&size=\${size}&mimeType=\${mimeType}&height=\${imageInfo.height}&width=\${imageInfo.width}")
->setCallbackBodyType("application/x-www-form-urlencoded");
Web客户端
- 下载 help.aliyun.com/document_detail/31...
- 找到
upload.js
的第30行代码,修改为实际服务器地址// serverUrl = 'http://88.88.88.88:8888' serverUrl = 'http://laravel.local/api/app-server/token'
- OSS对象存储的对应bucket设置Cors(Post打勾)
单文件服务与客户端的示例
github.com/alphasnow/aliyun-oss-ap...
本作品采用《CC 协议》,转载必须注明作者和本文链接