php 实现第三方云存储(阿里云、腾讯云、七牛云)

520 阅读3分钟

前言

云存储是一种网上在线存储(英语:Cloud storage)的模式,即把数据存放在通常由第三方托管的多台虚拟服务器,而非专属的服务器上。托管(hosting)公司运营大型的数据中心,需要数据存储托管的人,则透过向其购买或租赁存储空间的方式,来满足数据存储的需求。数据中心营运商根据客户的需求,在后端准备存储虚拟化的资源,并将其以存储资源池(storage pool)的方式提供,客户便可自行使用此存储资源池来存放文件或对象。实际上,这些资源可能被分布在众多的服务器主机上。

云存储这项服务乃透过Web服务应用程序接口(API), 或是透过Web化的用户界面来访问。

云存储优点

image.png

1、云存储属于分布式的,因此可用性比较好;

2、云存储一般都是三副本模式,当数据丢失后,可通过副本恢复,可靠性高;

3、云存储能够提高系统的安全性;

4、云存储网络资源丰富,能够提供BGP多线骨干网络,使全国各地访问流程;

5、云存储具备海量数据处理能力,能够做到1个到数十亿的文件处理;

6、使用云存储可降低运维成本,因为云存储供应商可提供专业的技术支持;

7、云存储资源利用率高,能够按需进行付费,从而降低了运营成本、避免资源浪费。

目前在解决数据存储问题上,现有的云存储产品已经能够做到在效率和成本上的同步降低,所以,摒弃原始的存储方式,选择云存储会是个人、企业的必然选择。

安装扩展包

composer require mrwanghongda/oss-sdk -vvv

框架中使用

/**
 * 七牛云
 */
const OSS_QINIU = 'qiniu';

/**
 * 腾讯云
 */
const OSS_TENCENT = 'tencent';

/**
 * 阿里云
 */
const OSS_ALIYUN = 'aliyun';

七牛云上传

//appid 填写七牛AccessKey  参考链接 https://portal.qiniu.com/user/key
//appkey 填写七牛SecretKey 参考链接 https://portal.qiniu.com/user/key
//region 默认为空
//bucket 填写自己的桶名(存储空间)
$config = new OssConfig('appid', 'appKey', '');
$ossObj = (new OssFactory(OssFactory::OSS_QINIU))->getOssService();
$ossObj->init($config)->bucket('bucket');

// 上传文件
$path = $request->file('file')->getPathname();
$result = $ossObj->put("test.jpg", $path);

// 删除文件
$result = $ossObj->delete(['test.jpg']);

dd($result);

腾讯云上传

//appid 替换为用户的 AccessKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
//appkey 替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
//region 替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket,例:ap-shanghai
//bucket 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看,例:1908-1257984403
$config = new OssConfig('appid', 'appKey', 'region');
$ossObj = (new OssFactory(OssFactory::OSS_TENCENT))->getOssService();
$ossObj->init($config)->bucket('bucket');

// 上传文件
$path = $request->file('file')->getPathname();
$result = $ossObj->put("test.jpg", $path);

// 删除文件
$result = $ossObj->delete(['test.jpg']);

dd($result);

阿里云上传

// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录https://ram.console.aliyun.com创建RAM账号。
$accessKeyId = "<yourAccessKeyId>"; 
$accessKeySecret = "<yourAccessKeySecret>";
// Endpoint以杭州为例,其它Region请按实际情况填写。
$region = "http://oss-cn-hangzhou.aliyuncs.com";
// 填写Bucket名称,例如examplebucket。 
$bucket= "ninteySevenOss";

$config = new OssConfig($accessKeyId, $accessKeySecret, $region);
$ossObj = (new OssFactory(OssFactory::OSS_ALIYUN))->getOssService();
$ossObj->init($config)->bucket($bucket);

// 上传文件
$path = $request->file('file')->getPathname();
$result = $ossObj->put("test.jpg", $path);

// 删除文件
$result = $ossObj->delete(['test.jpg']);

dd($result);