Yii2接入AWS S3管理附件(超大附件)

本文介绍了如何在Yii2框架下利用预签名URL直接将超大附件上传到AWS S3,避免服务器中转,提高上传速度。通过s3Attachment组件的GetPutPreSignature()方法获取预签名URL,并使用ajax发起PUT请求实现文件直接上传。
摘要由CSDN通过智能技术生成

概述

前几篇文章:Yii2接入AWS S3管理附件(基础使用)Yii2接入AWS S3管理附件(分片上传)Yii2接入AWS S3管理附件(私有附件),我们已经讲解了如何上传附件,和管理私有附件。
这篇文章我们继续扩展如何处理超大附件。面对超大附件,比如1G的附件,即使使用分片上传,也需要等好长时间。因为你的附件需要先上传到你的服务器,再从你的服务器上传到s3。所以需要等待很长时间是肯定的了。想到这个原因,解决办法也就有了,那我们能不能直接将附件上传到s3,不经过服务器不就快多了嘛。

使用预签名URL直接上传附件到s3

s3的预签名URL不但可以让我访问私有附件,也能让我们直接上传附件到s3。我们需要做的就是在s3Attachment组件中再增加GetPutPreSignature()方法就能获得可以put到s3的预签名URL。

/*
 * 获取附件的PUT预签名地址
 *
 * @param string $key 附件公网访问地址.
 * @param string $content_type 附件类型.
 */
public function GetPutPreSignature($key, $content_type, $expires = '2')
{
   
    if (empty($key) || empty($content_type) || !is_numeric($expires)) {
   
        return false;
    }

    try {
   

        $config = [
            'region' => Yii::$app->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值