[扩展推荐]阿里云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 协议》,转载必须注明作者和本文链接
转载请告知
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!