123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- namespace app\common\library;
- use Aws\S3\S3Client;
- use think\Db;
- use aws\CommandInterface;
- use think\Exception;
- class uploadToCloud{
- protected $accessKeyId = 'C5Z60UI32XPFXWCQJ55V'; //移动附件
- protected $secretAccessKey = 'IXrSTXBk0NJG8xb8D6GwuQIO1iPpNxKA8WtBcCa1'; //移动附件
- protected $bucket = 'gyyannex'; //移动附件
- protected $endpoint = 'http://eos-beijing-7.cmecloud.cn'; //移动附件
- protected $secondAccessKeyId = 'E7JG3AP34GU5DBU9A814'; //移动大文件
- protected $secondSecretAccessKey = 'jbnJowBQxwlKXP9ThfcBhzo9NNJPckz3jX2hGF5a'; //移动大文件
- protected $secondBucket1 = 'annexjn2'; //移动大文件-存储
- protected $secondBucket2 = 'tempjn2'; //移动大文件-临时
- protected $secondEndpointDown = 'http://eos.jinan-4.cmecloud.cn'; //移动外网大文件
- protected $secondEndpoint = 'http://eos.jinan-4-internal.cmecloud.cn'; //移动内网大文件
- /*
- * key 存储文件路径
- * source_file 本地文件路径
- */
- public function upload($key,$source_file,$bucket=1,$access=1,$secret=1,$point=1)
- {
- set_time_limit(0);
- switch ($point)
- {
- case 2:
- $endpoint = $this->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 '';
- }
- }
- }
|