这里只演示thinkphp5.0框架上传文件到阿里云oss对象存储中。其实官方文档说的很明白,但是在实操中我们总是会出现各种细节错误。恨不得有一个从头到尾的新手教程。
官方文档:PHP - 对象存储 OSS - 阿里云
1.前期准备工作
申请注册阿里云账号,开通阿里云oss对象存储我就不说了。然后进入对象存储控制台,创建一个Bucket。我创建的Bucket名称为liuqingwushui。注意,这个昵称后面会用到。然后再创建了一个文件夹dream。创建完之后的样子是这样的:
在阿里云oss对象存储控制台阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,别忘了先申请一个accessKeyId和accessKeySecret。后面会用到。官方建议说为了安全创建用RAM。这里为了测试,我就没用。
除此之后还有一个Endpoint地域节点,是在你创建Bucket根据你选择的地域进行分配的。我这里选择的西南成都,所以Endpoint是oss-cn-chengdu.aliyuncs.com。
2.整合上传测试
准备工作完毕,注意我标红的参数都是要用的,下面开始进行上传测试。我可以用的thinkphp5.0(后面简称tp5)框架,没有tp5框架的可以看我其他的博客,有提供下载地址。阿里云官方提供了很多种sdk安装初始化的方法。我选择的是最简单直接的源码方式。https://github.com/aliyun/aliyun-oss-php-sdk?spm=a2c4g.11186623.0.0.4dae2ceasCmOmJ
github下载源码,不出意外的话,下载来的是目录结构是这样的:
然后将这个文件夹复制到tp5的vendor下,起名aliyun:
下面开始使用:
Imgupload.php代码:
<?php
namespace app\aliyunoss\controller;
use think\Controller;
use think\Db; //数据库连接类Db
require_once '/../vendor/aliyun/autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;
class Imgupload extends Controller{
public function checkToken(){
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
$accessKeyId = "你自己的accessKeyId";
$accessKeySecret = "你自己的accessKeySecret";
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
$endpoint = "oss-cn-chengdu.aliyuncs.com";
// 填写Bucket名称,例如examplebucket。
$bucket= "liuqingwushui";
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
$object = "dream/exampleobject.txt";
// <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
$filePath = "D:\\examplefile.txt";
try{
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$ossClient->uploadFile($bucket, $object, $filePath);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . "OK" . "\n");
}
}
注意提前在D盘创建一个examplefile.txt文件。
然后我这里访问:http://localhost/tp5/public/aliyunoss/Imgupload/checkToken
就成功,再去你的dream目录下就会看到一个exampleobject.txt文件了。
码字不易,转载请注明出处,谢谢