qiniu.init.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. if (! defined('IS_INITPHP'))
  3. exit('Access Denied!');
  4. require_once ("qiniu/rs.php");
  5. /**
  6. * 七牛的类封装,包括上传的授权token获取,私有资源URL的获取以及文件上传
  7. *
  8. * @author Chen Deben
  9. * @copyright Meitu
  10. */
  11. class qiniuInit {
  12. private $APP_ACCESS_KEY;
  13. private $APP_SECRET_KEY;
  14. private $DOMAIN;
  15. private $BUCKET;
  16. private $CALLBACK;
  17. public function __construct() {
  18. $config = InitPHP::getConfig();
  19. $config = $config['qiniu'];
  20. $this->DOMAIN = $config['domain'];
  21. $this->APP_ACCESS_KEY = $config['access_key'];
  22. $this->APP_SECRET_KEY = $config['secret_key'];
  23. $this->BUCKET = $config['bucket'];
  24. $this->CALLBACK = $config['callback'];
  25. Qiniu_SetKeys($this->APP_ACCESS_KEY, $this->APP_SECRET_KEY);
  26. }
  27. /**
  28. * 获取私有资源的URL
  29. *
  30. * @param unknown $key
  31. * @return string
  32. */
  33. public function getUrl($key) {
  34. $baseUrl = Qiniu_RS_MakeBaseUrl($this->DOMAIN, $key);
  35. $getPolicy = new Qiniu_RS_GetPolicy();
  36. $privateUrl = $getPolicy->MakeRequest($baseUrl, null);
  37. return $privateUrl;
  38. }
  39. /**
  40. * 获取Token
  41. *
  42. * @param string $bucket
  43. * @return string
  44. */
  45. public function get_upload_token($uid,$attribute,$offline_result) {
  46. $uinqid = uniqid() . mt_rand(1, 10000);
  47. $key = $uid."/".$uinqid . '.jpg';
  48. $params = array(
  49. 'expires_in' => 2592000, // 直传七牛token过期时间(s)
  50. 'callback_url' => $this->CALLBACK, // 客户端直传后回调地址(七牛引导过来的)
  51. 'callback_body' => 'key='.$key.'&uid='.$uid.'&offline_result='.$offline_result.'&attribute='.$attribute
  52. );
  53. $putPolicy = new Qiniu_RS_PutPolicy($this->BUCKET, $params);
  54. $token = $putPolicy->Token(null);
  55. if (! $token) {
  56. // 获取七牛直传token失败时返回给客户端
  57. $return_data = array(
  58. 'upload_token' => ''
  59. );
  60. } else {
  61. $return_data = array(
  62. 'upload_token' => $token,
  63. 'key' => $key,
  64. 'expires_at' => 2592000 + time()
  65. );
  66. }
  67. return $return_data;
  68. }
  69. public function upload($key, $token, $file) {
  70. require_once ("qiniu/io.php");
  71. $putExtra = new Qiniu_PutExtra();
  72. list ($ret, $err) = Qiniu_PutFile($token, $key, $file, $putExtra);
  73. if ($err !== null) {
  74. echo json_encode($err);
  75. } else {
  76. echo json_encode($ret);
  77. }
  78. }
  79. }