又拍云存储使用记录
2016-09-26 19:16
337 查看
引:图片云存储,选择了又拍云,初次看api文档感觉有点乱啊,到网上找了各种资料之后,经过各种尝试,基本摸清了原理。
一、图片上传有两种方式:
第一种是先上传到自己的服务器然后再上传到又拍云(适用于对图片有比较特殊的处理的场景)
第二种是直接上传到又拍云
二、准备:
申请账号,分配操作员就不说了,直接进入主题,新建服务,
服务名称根据自己的需要随意创建,然后选择原站类型又拍云,授权已经创建的操作员
这样最基本的就创建完成了。如果想用自己的域名,只要按着走就可以了。
最基本的创建步骤就完成了,你就可以着手上传文件到又拍了。
三、上传操作
方法一:***********先上传文件到自己的服务器,上传到自己的服务器的过程就省略了
我用的是php,下载官方的sdk,下载相应的sdk,点击打开链接,以php为例,用Thinkphp,把文件放到Vendor目录下面的Upyun下面,Upyun/upyun.class.php
然后自己在Common/function.php 里面创建函数:
这样就可以把自己服务器上面的文件上传到又拍云了。
方法二:**********直接通过表单上传到又拍云
这个稍微复杂一点,涉及到签名
具体参考文档又拍云http form api 文档,
准备开始:
先从后台写起:
后台要处理两个东西:policy和signature。需要一个form api 的密钥,点击开启即可获得
后台要处理的数据在上面,处理好之后,assign到模版里面
模版里面最基本的几个组件
policy和signature原理:policy用来告诉又拍云服务器要上传的文件的一些基本验证信息,而signature就是为了防止policy被篡改,因为md5之后,policy一旦被更改就会 无法验证通过
一、图片上传有两种方式:
第一种是先上传到自己的服务器然后再上传到又拍云(适用于对图片有比较特殊的处理的场景)
第二种是直接上传到又拍云
二、准备:
申请账号,分配操作员就不说了,直接进入主题,新建服务,
服务名称根据自己的需要随意创建,然后选择原站类型又拍云,授权已经创建的操作员
这样最基本的就创建完成了。如果想用自己的域名,只要按着走就可以了。
最基本的创建步骤就完成了,你就可以着手上传文件到又拍了。
三、上传操作
方法一:***********先上传文件到自己的服务器,上传到自己的服务器的过程就省略了
我用的是php,下载官方的sdk,下载相应的sdk,点击打开链接,以php为例,用Thinkphp,把文件放到Vendor目录下面的Upyun下面,Upyun/upyun.class.php
然后自己在Common/function.php 里面创建函数:
/** *$savepath 图片又拍云上面保存的路径包括文件名 *$imagepath 图片在本地服务器上的路径,TP是用'./'相对于根路径 */ function upload($savepath, $imagepath) { vendor('Upyun.upyun#class'); $upyun = new \UpYun('你的bucket名,即服务名', '操作员', '操作员的密码'); $fh = fopen($imagepath, 'r'); //图片上传要变成资源类型的才能上传成功 //如果不是资源类型的,那么将会以文本的形式上传,但是却以图片的形式命名后缀,导致问题 $uploadResult = $upyun->writeFile($savepath, $fh); fclose($fh); }
这样就可以把自己服务器上面的文件上传到又拍云了。
方法二:**********直接通过表单上传到又拍云
这个稍微复杂一点,涉及到签名
具体参考文档又拍云http form api 文档,
准备开始:
先从后台写起:
// (回调中的所有信息均为 UTF-8 编码,签名验证的时候需要注意编码是否一致) $keyArr = array(); $keyArr['bucketname'] = '你的bucket名'; $form_api_secret = '系统分配的api密钥'<span style="font-family: Arial, Helvetica, sans-serif;">; // 表单 API 功能的密匙</span> $options = array(); $options['bucket'] = $keyArr['bucketname']; // 空间名 $options['expiration'] = time() + 3600; // 授权过期时间,一天 $options['save-key'] = '/pic/{year}{mon}{day}{hour}{min}{sec}{filemd5}{.suffix}';//图片的保存方式 $options['allow-file-type'] = 'jpg,png,gif,bmp.jpeg'; //允许上传的图片类型 $options['ext-param'] = json_encode(array( //用来进行数据写入的依据,可以写入一些认证信息 )); //图片大小 $options['content-length-range'] = '1000, 2048000'; //图片的大小,1k到2M //实际就是post,把数据post的地址 $options['notify-url'] = 'http://localhost/****'; // 服务端异步回调地址post // $options['return-url'] = 'http://localhost/****'; // 服务端同步回调地址get $keyArr['policy'] = base64_encode(json_encode($options)); //生成policy $keyArr['signature'] = md5($keyArr['policy'].'&'.$form_api_secret); //生成signature $this->assign('upyunparam', $keyArr);
后台要处理两个东西:policy和signature。需要一个form api 的密钥,点击开启即可获得
后台要处理的数据在上面,处理好之后,assign到模版里面
模版里面最基本的几个组件
<form action="http://v0.api.upyun.com/{$upyunparam['bucketname']}/" method="post" enctype="Multipart/form-data"> <input type="hidden" name="policy" value="{$upyunparam['policy']}"> <input type="hidden" name="signature" value="{$upyunparam['signature']}"> <input type="file" name="file"> <input type="submit" value="upload"> </form>完毕,上传文件即可。
policy和signature原理:policy用来告诉又拍云服务器要上传的文件的一些基本验证信息,而signature就是为了防止policy被篡改,因为md5之后,policy一旦被更改就会 无法验证通过
相关文章推荐
- 使用dom4j和XMLHTTP轻松解决多条记录操作
- 使用SQL语句获取数据库中随机N个记录
- 表中记录查询排序随笔(sql server中order by使用方式小总结)
- SQL基础:使用SQL从表中取记录
- C++Builder6中ADOQuery使用了lookup字段后如何插入记录
- 怎么合并bug_id相同的记录(bugzilla使用的mysql)?
- CP How-To:如何使用cPanel查看站点原始访问记录(Raw Access Logs)
- 使用Application_Error事件处理程序把异常记录到系统事件日志
- 使用Perl生成usmarc记录
- 使用dom4j和XMLHTTP轻松解决多条记录操作
- Community Server 1.0 Beta安装使用记录
- 在.Net程序中使用log4net记录日志(示例)
- VS2005 && MasterPage && Form 的一些相关使用记录
- Community Server 1.0 Beta安装使用记录(二)
- 2004.7.15 [C#学习记录]使用C#编写一个自定义控件
- 使用GridView添加,删除,编辑记录
- 使用.NET Framework组件中的DataGrid显示ADO中的RecordSet对象的记录
- MSFlexGrid控件使用点滴记录
- 顺便记录一下groupwise使用gaim
- 使用log4net记录日志到MySQL中