这里只演示thinkphp5.0框架上传文件到阿里云oss对象存储中。其实官方文档说的很明白,但是在实操中我们总是会出现各种细节错误。恨不得有一个从头到尾的新手教程。
官方文档:PHP - 对象存储 OSS - 阿里云
申请注册阿里云账号,开通阿里云oss对象存储我就不说了。然后进入对象存储控制台,创建一个Bucket。我创建的Bucket名称为liuqingwushui。注意,这个昵称后面会用到。然后再创建了一个文件夹dream。创建完之后的样子是这样的:
在阿里云oss对象存储控制台阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,别忘了先申请一个accessKeyId和accessKeySecret。后面会用到。官方建议说为了安全创建用RAM。这里为了测试,我就没用。
除此之后还有一个Endpoint地域节点,是在你创建Bucket根据你选择的地域进行分配的。我这里选择的西南成都,所以Endpoint是oss-cn-chengdu.aliyuncs.com。
准备工作完毕,注意我标红的参数都是要用的,下面开始进行上传测试。我可以用的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文件了。
码字不易,转载请注明出处,谢谢