Amazon AWS S3 for PHP 的API使用测试
2015-08-01 16:39
579 查看
1.php> 使用背景:
开发环境:thinkphp框架
官网手册好和官方S3的API:
http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html
http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.S3.S3Client.html
2.php> 过程简述:
创建AWS账户,免费注册,可免费使用一年(当然是最低级的功能试用)
根据账户创建KEY和ID
框架中引入AWS的SDK
用创建的KEY和ID实例化S3类: Aws\S3\S3Client
现在你就可以用他进行各种操作:上传、下载、删除、访问等等
3.php> 主要说一下这个地方我遇到的问题:
导入SDK包:
因为其自带命名空间且与Thinkphp里的空间不能融合,也与其命名规范不相容,所以自能作为第三方类库,放在文件夹\Library\Vendor中,这里需要用到php里的自动加载(autoload)机制:
在使用的函数开头首先使用
对应的加载原理:
插一句题外话,php的debug功能还不是很完善,楼主也是个半吊子,开始引入时一直超时,我以为是自动加载机制出现的问题,折腾了一天,把php命名空间和自动加载以及thinkphp的第三方类库翻了一遍,最后令楼主吐血的是,居然是IAM没有开相应的S3权限,IAM在创建的时候默认是没有权限的,所以最后找到原因后,楼主郁闷了好久,而且一定要保证网速好,这也是另一个血的教训。。。。
所以
IAM要开通相应的权限
网速牛逼,这样才能专心修改程序问题,要不然会被弄得相当糊涂
跨域请求(CORS):
网站涉及用JS远程调用,查过好多方案不说了,说解决方案:
想到S3作为专门的远程存储桶,那么它必然会有跨域请求的问题,果然可以直接在S3的控制台配置
进入S3的console->Properties->Permissions->Edit CORS Configuration
这是一个XML,这样所有的GET过来的请求响应,就不会被浏览器拦截,当然我们也可以设置更多的rule,来适配各种需求,问题就解决了
开发环境:thinkphp框架
官网手册好和官方S3的API:
http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html
http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.S3.S3Client.html
2.php> 过程简述:
创建AWS账户,免费注册,可免费使用一年(当然是最低级的功能试用)
根据账户创建KEY和ID
框架中引入AWS的SDK
用创建的KEY和ID实例化S3类: Aws\S3\S3Client
现在你就可以用他进行各种操作:上传、下载、删除、访问等等
3.php> 主要说一下这个地方我遇到的问题:
导入SDK包:
因为其自带命名空间且与Thinkphp里的空间不能融合,也与其命名规范不相容,所以自能作为第三方类库,放在文件夹\Library\Vendor中,这里需要用到php里的自动加载(autoload)机制:
在使用的函数开头首先使用
require_once("../inc/aws/aws-autoloader.php");
对应的加载原理:
spl_autoload_register(function ($class) use ($mapping) { if (isset($mapping[$class])) { require $mapping[$class]; } }, true);
插一句题外话,php的debug功能还不是很完善,楼主也是个半吊子,开始引入时一直超时,我以为是自动加载机制出现的问题,折腾了一天,把php命名空间和自动加载以及thinkphp的第三方类库翻了一遍,最后令楼主吐血的是,居然是IAM没有开相应的S3权限,IAM在创建的时候默认是没有权限的,所以最后找到原因后,楼主郁闷了好久,而且一定要保证网速好,这也是另一个血的教训。。。。
所以
IAM要开通相应的权限
网速牛逼,这样才能专心修改程序问题,要不然会被弄得相当糊涂
跨域请求(CORS):
网站涉及用JS远程调用,查过好多方案不说了,说解决方案:
想到S3作为专门的远程存储桶,那么它必然会有跨域请求的问题,果然可以直接在S3的控制台配置
进入S3的console->Properties->Permissions->Edit CORS Configuration
<?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <AllowedHeader>Authorization</AllowedHeader> </CORSRule> </CORSConfiguration>
这是一个XML,这样所有的GET过来的请求响应,就不会被浏览器拦截,当然我们也可以设置更多的rule,来适配各种需求,问题就解决了
相关文章推荐
- 跨服务器存储图片使用FTPClient 类
- ubuntu 安装phpmyadmin
- PHP代码调试总结
- PHP---数据库
- PHP文件上传优化
- php通过pdo连接mssql
- 安装及使用vsftpd+ssl
- Windows2008 IIS配置FTP站点
- php学习笔记_4_常量及魔法常量需要注意的点
- 【php框架学习】最简单的php mvc 模型框架实现
- PHP-动态变量,或者是可变变量
- PHP-变量的销毁
- PHP-赋值
- PHP-类型的转换
- PHP 404页面/如何设置404页面/URL静态化/URL伪静态化
- 用php编写空心金字塔,主要在于学习它的逻辑与思想
- PHP易混淆函数的区分方法及意义
- PHP 判断数组是否为空的方法
- 自己写的php curl库实现整站克隆
- php随机数怎么获取?一个简单的函数就能生成