概述
在Yii2接入AWS S3管理附件(基础使用)已经讲述了如何简单使用AWS S3托管附件。但是如果当你需要上传的附件比较大,比如说1G的附件。再使用简单的上传方式就会比较慢,AWS SDK是有支持大附件的分片多通道上传的,官方文档中给出的建议是超过200M的附件最好使用分片上传的方式。实现方式也很简单,只需要在我们已经写好的s3Attachment组件中增加MultipartUpload方法就好了。
/*
* 分片上传附件上传附件
*
* @param string $bucket 存储桶名称.
* @param string $key 附件公网访问地址.
* @param string $source_file 待上传的附件.
* @param string $content_type 附件类型.
* @param string $ACL 访问控制.
* 如果上传成功返回公网访问地址,如果上传失败返回false.
*/
public function MultipartUpload($bucket, $key, $source_file, $content_type, $ACL)
{
if(empty($bucket) || empty($key) || empty($source_file) || empty($content_type) || empty($ACL)){
return false;
}
try{
$config = [
'region' => Yii::$app->params['S3']['region'],
'version' => Yii::$app->params['S3']['version'],
'credentials' => [
'key' => Yii::$app->params