最近初学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,就可以直接在你的函数中使用啦~

use Qcloud\Cos\Client
/**
* 上传图片到腾讯云图片服务器
*/
public function upload () {
$cosClient = new Client(config('tengxunyun'));
$file = request()->file('file');
if ($file) {
try {
$result = $cosClient->putObject(
[
'Bucket' => "bucket_name",
'Key' => date("Y-m-d") . "/" . md5(microtime()) . '.jpg',
'Body' => fopen($file->getInfo()['tmp_name'], 'rb'),
"ACL" => "public-read-write",
// "ContentType" => "image/jpeg"
]
);
return json(
[
"code" => 0,
"msg" => '上传成功',
"data" => [
"src" => str_replace("cos.ap-beijing", "picbj", $result['ObjectURL']),
"title" => ""
]
]
);
} catch (\Exception $e) {
return json(
[
"code" => 1,
"msg" => $e,
"data" => [
"src" => "",
"title" => ""
]
]
);
}
}
}

另外,官方提供了很多种上传文件及下载文件的方法,可以按需引用

上传文件

  • 使用 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相关推荐

  1. 通过COS上传文件至腾讯云

    最近看了一下上传文件至腾讯云.腾讯官方提供的API,cloud.tencent.com/document/pr- 文档上传 文档上传首页要首先引入腾讯云封装好的cos-js-sdk-v5.js文件,然 ...

  2. 上传文件到腾讯云存储桶

    上传文件到腾讯云存储桶 一,配置腾讯云Cos 流程图 第一步,注册腾讯云账号 第二步,选择帐户 填写个人信息 第三步扫码授权 手机端授权 第四步点击免费产品 五步选择对象存储Cos 六步开通服务 七步 ...

  3. 本地WinSCP上传文件到腾讯云服务器显示Permission Denied

    本地WinSCP上传文件到腾讯云服务器显示 Permission Denied 从字面看,就是没有权限.这时我首先想到了腾讯云服务器的安全组.先去设置安全组. 1.设置安全组 我们用的是腾讯的云服务器 ...

  4. 上传excel腾讯云服务器,使用SpringBoot上传文件到腾讯云

    最近在做一个项目,涉及到腾讯云上传文件/图片到服务器,为了图方便并且提升访问速度,想着上传到腾讯云存储桶是一个不错的选择.腾讯云存储桶的创建可见我之前的文章. 当然存储桶里面不仅可以存图片,也可以存储 ...

  5. 前端上传文件到腾讯云(对象存储)

    好吧,没写之前简单的说一下为什么要写,我还是怀着比较沉重的心情写的这篇教程,主要是心里没底,不知道能写明白不,不过既然提笔了,那就硬着头皮写吧,没办法,毕竟跌跌撞撞总算是搞出来了.还有就是我百度了,没 ...

  6. 小程序用thinkPHP上传文件到腾讯云对象存储空间

    <?php/*** Created by PhpStorm.* User: Administrator* Date: 2017/11/22* Time: 10:48*/namespace Hom ...

  7. ios腾讯云文件服务器,使用axios 上传文件到腾讯云

    在网上看到的好多的都是使用七牛的,花了一点时间看了下腾讯的. 不管那个云服务都是 客户端通过自己的key 进行加密,服务器解密 查看是否有资格,然后进行传输. 使用腾讯云的对象存储. 整个流程: 腾讯 ...

  8. git上传文件到腾讯云服务器,我的hexo部署到腾讯云服务器

    最近发现腾讯云搞活动,然后就心血来潮买了个服务器,感觉是挺便宜的(肯定是腾讯的套路),还续费了2年,希望自己能玩好这台服务器.昨天刚买完之后,一直在想不知道用来干嘛,想到现在还是不清楚要搞些撒东西出来 ...

  9. 利用腾讯云进行上传文件

    1.导入依赖 <!-- 腾讯云文件上传--><dependency><groupId>com.qcloud</groupId><artifactI ...

最新文章

  1. IM与工作信息流整合
  2. 石墨烯区块链(6)开发实例
  3. 【图像分割】图像分割专栏栏主自述:分割,我们究竟在研究什么?
  4. 求职OMG——大学生就业指导与技能
  5. php中Session的生成机制、回收机制和存储机制探究
  6. 如果张东升是个程序员,你还有机会吗?
  7. SQL中and和or的区别是?
  8. bzoj千题计划287:bzoj1228: [SDOI2009]ED
  9. c访问excel 密码 api_管理EXCEL的5种服务使用渠道
  10. 项目开发流程简单介绍
  11. 高等数学学习笔记——第十讲——子数列与聚点原理(1. 数列收敛的归并性)
  12. orbSLAM2 之 追踪参考关键帧
  13. matlab画图时候图例混乱解决方法
  14. java 抛体运动6_抛体运动的公式
  15. codeforces1608C. Game Master题解(图论)
  16. General Trainning Strategy in Caffe
  17. 美团项目 ---首页开发2
  18. 选择与随缘----老舍和西蒙的关联
  19. android ContentValues类
  20. 小波去噪处理音频\MFCC对比

热门文章

  1. Google退出内地市场
  2. 塑源码是什么_朔源码燕窝就没有问题货吗?朔源码和非朔源码燕窝该如何选择?...
  3. 无效的m3u8怎么办_vue使用video.js解决m3u8视频播放格式
  4. iMazing2023iOS系统设备数据传输与备份工具使用教程
  5. 各个网站及搜索引擎收录地址大全
  6. 使用xshell登陆腾讯云主机
  7. 中国云计算行业研究报告
  8. 数据仓库系列4-维度表
  9. 《Rework》语句摘录
  10. PCF8591 +MQ3 +LCD1602+89C51RC(酒精传感器)