Web端直传服务端签名直传并设置上传回调(ThinkPHP3.2.3)

image

生成签名

第一步:点击下载代码

image

第二步

创建bucket


image.png

第三步设置跨域

image.png

image.png

第四步:打开/Application/Common/Conf/config.php,配置文件参数到阿里云取出

image.png
image.png

image.png

代码


'ALIOSS_CONFIG'=> array(

'KEY_ID'=>'',//阿里云oss key_id

'KEY_SECRET'=>'',//阿里云oss key_secret

'END_POINT'=>'',//阿里云oss endpoint

'BUCKET'=>'',// bucken名称

),

第五步:将文件粘贴到thinkphp目录下面

image.png

image.png

将下载好的代码找到/php/get.php,里面有个gmt_iso8601函数,将其代码复制到/Application/Common/Common/function.php

function gmt_iso8601($time) {
    $dtStr = date("c", $time);
    $mydatetime = new DateTime($dtStr);
    $expiration = $mydatetime->format(DateTime::ISO8601);
    $pos = strpos($expiration, '+');
    $expiration = substr($expiration, 0, $pos);
    return $expiration."Z";
}

image.png

创建一个控制器文件,创建一个方法,将/php/get.php中除了gmt_iso8601函数的其他代码粘贴进去
image.png

将其内部参数修改成自己的,将变量$id设成AccessKeyId,$key设置成AccessKeySecret,$host设置成 bucket+endpoint。

回调

第一步:

将上述生成签名的$callback_body内的参数修改一下,callbackUlr设置成自己写的一个回调方法路径,callbackHost写成域名(可以不写),filename设置自己想要oss返回给我们的参数,有文件名称,大小,宽和高,callbackBodyType设置请求头

image.png

第二步:

下载回调函数的demo

image.png

第三步:

将下载好的callback.php文件内容粘贴到你创建好的回调方法内

image.png

阿里云oss权限设置成私有后如何访问

image.png

第一步:将一下代码复制到/Application/Common/Common/function.php下面

阿里云原文链接在此

/**
 * 生成GetObject的签名url,主要用于私有权限下的读访问控制
 *
 * @param $ossClient OssClient OSSClient实例
 * @param $bucket string bucket名称
 * @return null
 */
function getSignedUrlForGettingObject($object)
{
    import('Vendor.oss_php_sdk_20140625.lib.requestcore.requestcore');
    $ossClient = new_oss();
    $bucket = C('ALIOSS_CONFIG.BUCKET');
//    $object = "test/test-signature-test-upload-and-download.txt";
    $timeout = 3600; // URL的有效期是3600秒
    try{
        $signedUrl = $ossClient->signUrl($bucket, $object, $timeout);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    $url = __FUNCTION__ . ": signedUrl: " . $signedUrl. "\n";
    return $url;
    print(__FUNCTION__ . ": signedUrl: " . $signedUrl. "\n");
    /**
     * 可以类似的代码来访问签名的URL,也可以输入到浏览器中去访问
     */
    $request = new RequestCore($signedUrl);
    $request->set_method('GET');
    $request->send_request();
    $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code());
    if ($res->isOK()) {
        print(__FUNCTION__ . ": OK" . "\n");
    } else {
        print(__FUNCTION__ . ": FAILED" . "\n");
    };

第二步:将回调函数返回的filename传入此函数,生成签名后的url即可在浏览器访问

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,009评论 19 139
  • jHipster - 微服务搭建 CC_简书[https://www.jianshu.com/u/be0d56c4...
    quanjj阅读 846评论 0 2
  • 2017第3本,陈坤,行走的力量。以前看名人写的书是好奇,觉得他们能出名只不过比平常人多了些运气。然而,我又...
    蜜三刀呀阅读 377评论 0 0