php上传文件至腾讯COS
最近初学php,看了一遍教程就开始撸代码,途中不断入坑,硬着头皮一个一个查。。。
PS:本人主要写前端,php小白,不喜勿喷,大神请绕道。。。
这不今天要写文件上传,由于前端要对接微信小程序,于是乎选择了腾讯的COS,一看文档一头雾水,不懂?那就顺着文档一步一步来。
第一步 开发准备
SDK 获取
1. GitHub
#在GitHub中获取代码
https://github.com/tencentyun/cos-php-sdk-v5
将源代码放入您的项目目录下即可使用
2. Composer
在项目目录下,新建一个composer.json的文件,内容如下
#利用Composer下载
{"require": {"qcloud/cos-sdk-v5": ">=1.0"}
}
然后使用下面的命令进行安装:
composer install
好啦,第一步完成,还算简单。。。
第二步 快速入门
可参照 Demo 程序,详见 GitHub 链接 。
配置文件
#这里请填写cos-autoloader.php该文件所在的相对路径
require(__DIR__ . DIRECTORY_SEPARATOR . 'cos-autoloader.php');$cosClient = new Qcloud\Cos\Client(array('region' => getenv('COS_REGION'),'credentials'=> array('secretId' => getenv('COS_KEY'),'secretKey' => getenv('COS_SECRET'))));
看到这里我就一脸懵逼,本来就不知道配置文件放哪,网上找了半天也不知道从哪入手,后来自己摸索,终于被自己啃出来。。。
在application里面找到配置文件config.php,添加如下代码,其中:region是你的COS所属地区,secretId和secretKey在你的API秘钥管理里面都可以找到。
然后在你的controller中引入cos,就可以直接在你的函数中使用啦~
另外,官方提供了很多种上传文件及下载文件的方法,可以按需引用
上传文件
- 使用 putObject 接口上传文件(最大 5GB);
- 使用 Upload 接口分块上传文件。
# 上传文件
## putObject(上传接口,最大支持上传5G文件)
### 上传内存中的字符串
try {$result = $cosClient->putObject(array('Bucket' => $bucket,'Key' => $key,'Body' => 'Hello World!'));print_r($result);
} catch (\Exception $e) {echo "$e\n";
}### 上传文件流
try {$result = $cosClient->putObject(array('Bucket' => $bucket,'Key' => $key,'Body' => fopen($local_path, 'rb')));print_r($result);
} catch (\Exception $e) {echo "$e\n";
}### 设置header和meta
try {$result = $cosClient->putObject(array('Bucket' => $bucket,'Key' => $key,'Body' => fopen($local_path, 'rb'),'ACL' => 'string','CacheControl' => 'string','ContentDisposition' => 'string','ContentEncoding' => 'string','ContentLanguage' => 'string','ContentLength' => integer,'ContentType' => 'string','Expires' => 'mixed type: string (date format)|int (unix timestamp)|\DateTime','GrantFullControl' => 'string','GrantRead' => 'string','GrantWrite' => 'string','Metadata' => array('string' => 'string',),'StorageClass' => 'string'));print_r($result);
} catch (\Exception $e) {echo "$e\n";
}## Upload(高级上传接口,默认使用分块上传最大支持50T)
### 上传内存中的字符串
try {$result = $cosClient->Upload($bucket = $bucket,$key = $key,$body = 'Hello World!');print_r($result);
} catch (\Exception $e) {echo "$e\n";
}### 上传文件流
try {$result = $cosClient->Upload($bucket = $bucket,$key = $key,$body = fopen($local_path, 'rb'));print_r($result);
} catch (\Exception $e) {echo "$e\n";
}### 设置header和meta
try {$result = $cosClient->upload($bucket= $bucket,$key = $key,$body = fopen($local_path, 'rb'),$options = array('ACL' => 'string','CacheControl' => 'string','ContentDisposition' => 'string','ContentEncoding' => 'string','ContentLanguage' => 'string','ContentLength' => integer,'ContentType' => 'string','Expires' => 'mixed type: string (date format)|int (unix timestamp)|\DateTime','GrantFullControl' => 'string','GrantRead' => 'string','GrantWrite' => 'string','Metadata' => array('string' => 'string',),'StorageClass' => 'string'));print_r($result);
} catch (\Exception $e) {echo "$e\n";
}
下载文件
- 使用 getObject 接口下载文件;
- 使用 getObjectUrl 接口获取文件下载 URL。
# 下载文件
## getObject(下载文件)
### 下载到内存
try {$result = $cosClient->getObject(array('Bucket' => $bucket,'Key' => $key));echo($result['Body']);
} catch (\Exception $e) {echo "$e\n";
}### 下载到本地
try {$result = $cosClient->getObject(array('Bucket' => $bucket,'Key' => $key,'SaveAs' => $local_path));
} catch (\Exception $e) {echo "$e\n";
}### 指定下载范围
/** Range 字段格式为 'bytes=a-b'*/
try {$result = $cosClient->getObject(array('Bucket' => $bucket,'Key' => $key,'Range' => 'bytes=0-10','SaveAs' => $local_path));
} catch (\Exception $e) {echo "$e\n";
}### 设置返回header
try {$result = $cosClient->getObject(array('Bucket' => $bucket,'Key' => $key,'ResponseCacheControl' => 'string','ResponseContentDisposition' => 'string','ResponseContentEncoding' => 'string','ResponseContentLanguage' => 'string','ResponseContentType' => 'string','ResponseExpires' => 'mixed type: string (date format)|int (unix timestamp)|\DateTime','SaveAs' => $local_path));
} catch (\Exception $e) {echo "$e\n";
}## getObjectUrl(获取文件UrL)
try {$url = "/{$key}";$request = $cosClient->get($url);$signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes');echo ($signedUrl);} catch (\Exception $e) {echo "$e\n";
}
php上传文件至腾讯COS相关推荐
- 通过COS上传文件至腾讯云
最近看了一下上传文件至腾讯云.腾讯官方提供的API,cloud.tencent.com/document/pr- 文档上传 文档上传首页要首先引入腾讯云封装好的cos-js-sdk-v5.js文件,然 ...
- 上传文件到腾讯云存储桶
上传文件到腾讯云存储桶 一,配置腾讯云Cos 流程图 第一步,注册腾讯云账号 第二步,选择帐户 填写个人信息 第三步扫码授权 手机端授权 第四步点击免费产品 五步选择对象存储Cos 六步开通服务 七步 ...
- 本地WinSCP上传文件到腾讯云服务器显示Permission Denied
本地WinSCP上传文件到腾讯云服务器显示 Permission Denied 从字面看,就是没有权限.这时我首先想到了腾讯云服务器的安全组.先去设置安全组. 1.设置安全组 我们用的是腾讯的云服务器 ...
- 上传excel腾讯云服务器,使用SpringBoot上传文件到腾讯云
最近在做一个项目,涉及到腾讯云上传文件/图片到服务器,为了图方便并且提升访问速度,想着上传到腾讯云存储桶是一个不错的选择.腾讯云存储桶的创建可见我之前的文章. 当然存储桶里面不仅可以存图片,也可以存储 ...
- 前端上传文件到腾讯云(对象存储)
好吧,没写之前简单的说一下为什么要写,我还是怀着比较沉重的心情写的这篇教程,主要是心里没底,不知道能写明白不,不过既然提笔了,那就硬着头皮写吧,没办法,毕竟跌跌撞撞总算是搞出来了.还有就是我百度了,没 ...
- 小程序用thinkPHP上传文件到腾讯云对象存储空间
<?php/*** Created by PhpStorm.* User: Administrator* Date: 2017/11/22* Time: 10:48*/namespace Hom ...
- ios腾讯云文件服务器,使用axios 上传文件到腾讯云
在网上看到的好多的都是使用七牛的,花了一点时间看了下腾讯的. 不管那个云服务都是 客户端通过自己的key 进行加密,服务器解密 查看是否有资格,然后进行传输. 使用腾讯云的对象存储. 整个流程: 腾讯 ...
- git上传文件到腾讯云服务器,我的hexo部署到腾讯云服务器
最近发现腾讯云搞活动,然后就心血来潮买了个服务器,感觉是挺便宜的(肯定是腾讯的套路),还续费了2年,希望自己能玩好这台服务器.昨天刚买完之后,一直在想不知道用来干嘛,想到现在还是不清楚要搞些撒东西出来 ...
- 利用腾讯云进行上传文件
1.导入依赖 <!-- 腾讯云文件上传--><dependency><groupId>com.qcloud</groupId><artifactI ...
最新文章
- IM与工作信息流整合
- 石墨烯区块链(6)开发实例
- 【图像分割】图像分割专栏栏主自述:分割,我们究竟在研究什么?
- 求职OMG——大学生就业指导与技能
- php中Session的生成机制、回收机制和存储机制探究
- 如果张东升是个程序员,你还有机会吗?
- SQL中and和or的区别是?
- bzoj千题计划287:bzoj1228: [SDOI2009]ED
- c访问excel 密码 api_管理EXCEL的5种服务使用渠道
- 项目开发流程简单介绍
- 高等数学学习笔记——第十讲——子数列与聚点原理(1. 数列收敛的归并性)
- orbSLAM2 之 追踪参考关键帧
- matlab画图时候图例混乱解决方法
- java 抛体运动6_抛体运动的公式
- codeforces1608C. Game Master题解(图论)
- General Trainning Strategy in Caffe
- 美团项目 ---首页开发2
- 选择与随缘----老舍和西蒙的关联
- android ContentValues类
- 小波去噪处理音频\MFCC对比