[扩展推荐]阿里云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 客户端#

  1. 下载 help.aliyun.com/document_detail/31...
  2. 找到 upload.js 的第 30 行代码,修改为实际服务器地址
     // serverUrl = 'http://88.88.88.88:8888'
     serverUrl = 'http://laravel.local/api/app-server/token'
  3. OSS 对象存储的对应 bucket 设置 Cors (Post 打勾)

单文件服务与客户端的示例#

github.com/alphasnow/aliyun-oss-ap...

本作品采用《CC 协议》,转载必须注明作者和本文链接
转载请告知
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。