secondEndpoint; break; case 1: default: $endpoint = $this->endpoint; } switch ($access) { case 2: $accessKeyId = $this->secondAccessKeyId; break; case 1: default: $accessKeyId = $this->accessKeyId; } switch ($secret) { case 2: $secretAccessKey = $this->secondSecretAccessKey; break; case 1: default: $secretAccessKey = $this->secretAccessKey; } $s3 = new S3Client([ 'region' => 'us-standard', 'version' => 'latest', 'endpoint' => $endpoint, 'bucket_endpoint' => false, 'credentials' => [ 'key' => $accessKeyId, 'secret' => $secretAccessKey, ], ]); // $acl = 'public-read'; $acl = 'private'; switch ($bucket) { case 2: $bucket = $this->secondBucket1; break; case 3: $bucket = $this->secondBucket2; break; case 1: default: $bucket = $this->bucket; break; } $return = $s3->upload($bucket, $key, fopen($source_file, 'rb'), $acl); return $return; } public function down($file) { set_time_limit(0); $endpoint = $this->endpoint; $accessKeyId = $this->accessKeyId; $secretAccessKey = $this->secretAccessKey; $bucket = $this->bucket; $s3 = new S3Client([ 'region' => 'us-standard', 'version' => 'latest', 'endpoint' => $endpoint, 'bucket_endpoint' => false, 'credentials' => [ 'key' => $accessKeyId, 'secret' => $secretAccessKey, ], ]); $result = $s3->getObject(array( 'Bucket' => $bucket, 'Key' => 'cs/hello.txt', // 'Range' => 'bytes=0-20' // 只下载文件的前 20 个字节 // 'SaveAs' => './savetolocal.txt' )); var_dump($result);die; return $result['Body']; } public function makeUrl($key,$fileType='attachment',$expires='+12 hours',$bucket='') { try { if(empty($key)) { return ''; } $key = ltrim($key,'/'); $arr = explode('/',$key); $filename = $arr[count($arr)-1]; set_time_limit(0); $endpoint = $this->endpoint; $accessKeyId = $this->accessKeyId; $secretAccessKey = $this->secretAccessKey; if(empty($bucket)) { $bucket = $this->bucket; } $s3 = new S3Client([ 'region' => 'us-standard', 'version' => 'latest', 'endpoint' => $endpoint, 'bucket_endpoint' => false, 'credentials' => [ 'key' => $accessKeyId, 'secret' => $secretAccessKey, ], ]); $cmd = $s3->getCommand('GetObject',[ 'Bucket'=>$bucket, 'Key'=>$key, 'ResponseContentDisposition'=>$fileType.';filename='.$filename ]); $result = $s3->createPresignedRequest($cmd,$expires); // 路径 $return = (string)$result->getRequestTarget() ?? ''; //完整url // $return = (string)$result->getUri() ?? ''; return $return; }catch (Exception $e) { return ''; } } // 移动云大文件获取 public function makeCloudUrl($key,$fileType='attachment',$bucket='2',$expires='+12 hours') { try { if(empty($key)) { return ''; } $key = ltrim($key,'/'); $arr = explode('/',$key); $filename = $arr[count($arr)-1]; set_time_limit(0); $endpoint = $this->secondEndpointDown; $accessKeyId = $this->secondAccessKeyId; $secretAccessKey = $this->secondSecretAccessKey; switch ($bucket) { case 2: $bucket = $this->secondBucket1; break; case 3: $bucket = $this->secondBucket2; break; case 1: default: $bucket = $this->bucket; break; } $s3 = new S3Client([ 'region' => 'us-standard', 'version' => 'latest', 'endpoint' => $endpoint, 'bucket_endpoint' => false, 'credentials' => [ 'key' => $accessKeyId, 'secret' => $secretAccessKey, ], ]); $cmd = $s3->getCommand('GetObject',[ 'Bucket'=>$bucket, 'Key'=>$key, 'ResponseContentDisposition'=>$fileType.';filename='.$filename ]); $result = $s3->createPresignedRequest($cmd,$expires); // 路径 $return = (string)$result->getRequestTarget() ?? ''; //完整url // $return = (string)$result->getUri() ?? ''; return $return; }catch (Exception $e) { return ''; } } }