[扩展推荐]阿里云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 协议》,转载必须注明作者和本文链接
推荐文章: