推特 阿里云技术文档正文

示例_PHP SDK_SDK手册_智能云相册

admin 阿里云技术文档 2020-02-11 216 0
阿里云服务器优惠

示例

下面代码演示如何使用智能云相册的PHP SDK完成照片上传、获取照片列表、获取照片缩略图地址和删除照片等基本功能。

示例代码和SDK的目录结构如下:

  1. |____aliyun-oss-php-sdk-2.2.4/
  2. |____aliyun-php-sdk-cloudphoto/
  3. |____aliyun-php-sdk-core/
  4. |____cloudphoto-phpdemo.php

cloudphoto-phpdemo.php的内容如下,请参考代码中的注释填写相关配置。

  1. <?php
  2. // 引入智能云相册的SDK
  3. include_once 'aliyun-php-sdk-core/Config.php';
  4. Autoloader::addAutoloadPath("aliyun-php-sdk-cloudphoto");
  5. // 引入OSS的SDK
  6. require_once 'aliyun-oss-php-sdk-2.2.4/autoload.php';
  7. use CloudPhoto\Request\V20170711 as CloudPhoto;
  8. // TODO - 修改这里的storeName, libraryID, 本地待上传文件路和AK
  9. $storeName = "";
  10. $libraryId = "";
  11. $localFile = ""; // 本地待上传的文件
  12. // 具有访问智能云相册权限的AK,可以是主账号的AK,也可以是授权后的子账号AK。
  13. $accessKeyId = "";
  14. $accessKeySecret = "";
  15. // 请确认上述变量都已初始化。
  16. // 创建客户端对象
  17. DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "CloudPhoto", "cloudphoto.cn-shanghai.aliyuncs.com");
  18. $profile = DefaultProfile::getProfile("cn-shanghai", $accessKeyId, $accessKeySecret);
  19. $cloudPhotoClient = new DefaultAcsClient($profile);
  20. // 演示1:上传文件
  21. // 1.1 开启上传事务,获取和OSS上传相关的信息
  22. $createTransactionRequest = new CloudPhoto\CreateTransactionRequest();
  23. $createTransactionRequest->setProtocol("https");
  24. $createTransactionRequest->setStoreName($storeName);
  25. $createTransactionRequest->setLibraryId($libraryId);
  26. $createTransactionRequest->setMd5(md5_file($localFile));
  27. $createTransactionRequest->setSize(filesize($localFile));
  28. $createTransactionRequest->setExt("jpg");
  29. $createTransactionResponse = $cloudPhotoClient->getAcsResponse($createTransactionRequest);
  30. print_r($createTransactionResponse);
  31. $sessionId = $createTransactionResponse->Transaction->Upload->SessionId;
  32. $ossAccessKeyId = $createTransactionResponse->Transaction->Upload->AccessKeyId;
  33. $ossAccessKeySecret = $createTransactionResponse->Transaction->Upload->AccessKeySecret;
  34. $ossStsToken = $createTransactionResponse->Transaction->Upload->StsToken;
  35. $bucket = $createTransactionResponse->Transaction->Upload->Bucket;
  36. $objectKey = $createTransactionResponse->Transaction->Upload->ObjectKey;
  37. $endPoint = $createTransactionResponse->Transaction->Upload->OssEndpoint;
  38. $fileId = $createTransactionResponse->Transaction->Upload->FileId;
  39. // 1.2 上传文件到OSS
  40. $ossClient = new \OSS\OssClient($ossAccessKeyId, $ossAccessKeySecret, $endPoint, false, $ossStsToken);
  41. $ossClient->uploadFile($bucket, $objectKey, $localFile);
  42. // 1.3 创建照片对象
  43. $createPhotoRequest = new CloudPhoto\CreatePhotoRequest();
  44. $createPhotoRequest->setProtocol("https");
  45. $createPhotoRequest->setStoreName($storeName);
  46. $createPhotoRequest->setLibraryId($libraryId);
  47. $createPhotoRequest->setFileId($fileId);
  48. $createPhotoRequest->setSessionId($sessionId);
  49. $createPhotoResponse = $cloudPhotoClient->getAcsResponse($createPhotoRequest);
  50. print_r($createPhotoResponse);
  51. // photoId是个64bit的数字,可能很大,将其转为字符串。
  52. $photoId = number_format($createPhotoResponse->Photo->Id, 0, '', '');
  53. print("photo id = " . $photoId) . PHP_EOL;
  54. // 演示2:获取照片列表
  55. $listPhotoRequest = new CloudPhoto\ListPhotosRequest();
  56. $listPhotoRequest->setProtocol("https");
  57. $listPhotoRequest->setStoreName($storeName);
  58. $listPhotoRequest->setLibraryId($libraryId);
  59. $listPhotoRequest->setCursor(0);
  60. $listPhotoRequest->setDirection("forward");
  61. $listPhotoRequest->setSize(20);
  62. $listPhotoRequest->setState("active");
  63. $listPhotoResponse = $cloudPhotoClient->getAcsResponse($listPhotoRequest);
  64. print_r($listPhotoResponse);
  65. // 演示3:获取照片缩略图地址
  66. $getThumbnailRequest = new CloudPhoto\GetThumbnailRequest();
  67. $getThumbnailRequest->setProtocol("https");
  68. $getThumbnailRequest->setStoreName($storeName);
  69. $getThumbnailRequest->setLibraryId($libraryId);
  70. $getThumbnailRequest->setPhotoId($photoId);
  71. $getThumbnailRequest->setZoomType("image/resize,h_100"); // 缩放格式参考:https://help.aliyun.com/document_detail/44688.html
  72. $getThumbnailResponse = $cloudPhotoClient->getAcsResponse($getThumbnailRequest);
  73. print_r($getThumbnailResponse);
  74. // 演示4:删除照片
  75. $deletePhotoRequest = new CloudPhoto\DeletePhotosRequest();
  76. $deletePhotoRequest->setProtocol("https");
  77. $deletePhotoRequest->setStoreName($storeName);
  78. $deletePhotoRequest->setLibraryId($libraryId);
  79. $deletePhotoRequest->setPhotoIds(array($photoId));
  80. $deletePhotoResponse = $cloudPhotoClient->getAcsResponse($deletePhotoRequest);
  81. print_r($deletePhotoResponse);
  82. ?>
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

-----