文章目录
前言
随着云存储的不断发展,文件存储的方式也发生着很大的改变。各类的云存储网盘大家也都不陌生,今天博主教大家如何拥有一个自己的存储系统。
一、网盘是什么
网盘是简而言之虚拟的储存空间,不需要提供硬件设备即可实现文件的存储。也被称为“云盘”。
二、如何搭建自己的网盘
1.基于本地硬盘为空间的存储方式
- 通过前端from表单进行提交
- 后台文件存储至本地磁盘
<form>
<input type="file" id="file-input" name="fileContent">
</form>
2.基于各大对象存储平台为空间的存储方式
相信很多朋友就会纳闷,本来已经是在介绍云存储系统了,又跳出来以各大对象存储为空间的存储。搞什么?第一什么是对象存储?第二如何实现以对象存为存储空间?
1.对象存储:
存储大家都理解。那什么是对象?男女朋友?当然不是!!!
对象存储服务(即文件存储)中的对象指的是比如图片,压缩包,安装包,视频,网站css文件.......(说白了就是各类的文件),主要作用于分担服务器存储压力。
2.以对象存储为存储空间:
与本地存储的主要区别在于,文件存储位置的不同。
这里以腾讯云对象存储举例:
上传本地对象
<?php
require dirname(__FILE__) . '/../vendor/autoload.php';
$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'https', //协议头部,默认为http
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));
$local_path = "/Users/xxx/Desktop/exampleobject.txt"; //保存到用户本地路径
try {
$result = $cosClient->upload(
$bucket = 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
$key = 'exampleobject', //此处的 key 为对象键
$body = fopen($local_path, 'rb')
);
// 请求成功
print_r($result);
} catch (\Exception $e) {
// 请求失败
echo($e);
}
下载对象
<?php
require dirname(__FILE__) . '/../vendor/autoload.php';
$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'https', //协议头部,默认为http
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));
$local_path = "/Users/xxx/Desktop/exampleobject.txt"; //保存到用户本地路径
$printbar = function($totalSize, $downloadedSize) {
printf("downloaded [%d/%d]\n", $downloadedSize, $totalSize);
};
try {
$result = $cosClient->download(
$bucket = 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
$key = 'exampleobject',
$saveAs = $local_path,
$options= array(
'Progress' => $printbar, //指定进度条
'PartSize' => 10 * 1024 * 1024, //分块大小
'Concurrency' => 5, //并发数
'ResumableDownload' => true, //是否开启断点续传,默认为false
'ResumableTaskFile' => 'tmp.cosresumabletask' //断点文件信息路径,默认为<localpath>.cosresumabletask
)
);
// 请求成功
print_r($result);
} catch (\Exception $e) {
// 请求失败
echo($e);
}
程序演示与下载
程序演示: