object-operations-sample.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <!--
  2. * Copyright 2019 Huawei Technologies Co.,Ltd.
  3. * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
  4. * this file except in compliance with the License. You may obtain a copy of the
  5. * License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software distributed
  10. * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  11. * CONDITIONS OF ANY KIND, either express or implied. See the License for the
  12. * specific language governing permissions and limitations under the License.
  13. -->
  14. <!DOCTYPE html>
  15. <html lang="en">
  16. <head>
  17. <meta charset="utf-8">
  18. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  19. <meta http-equiv="Pragma" name="Pragma" content="no-cache">
  20. <title>object_operations_sample</title>
  21. </head>
  22. <body>
  23. <h3>OBS BrowserJS SDK demo</h3>
  24. <h4>Basic Configuration</h4>
  25. <label>AK:</label> <input type="text" value="*** Provide your Access Key ***" id="ak" size="30"/>
  26. <label>SK:</label> <input type="text" value="*** Provide your Secret Key ***" id="sk" size="30"/>
  27. <p>
  28. <label>Server:</label> <input type="text" value="http://your-endpoint" id="server" size="30"/>
  29. <label>Bucket:</label> <input type="text" value="bucketname" id="bucketname"/>
  30. <label>Key:</label> <input type="text" value="objectkey" id="objectkey"/>
  31. <p>
  32. <input type="button" value="Click to upload object" onclick="putObject();"/>
  33. <p>
  34. <input type="button" value="Click to get object metadata" onclick="getObjectMetadata();"/>
  35. <p>
  36. <input type="button" value="Click to download object" onclick="getObject();"/>
  37. <p>
  38. <input type="button" value="Click to copy object" onclick="copyObject();"/>
  39. <p>
  40. <input type="button" value="Click to set/get object acl" onclick="doObjectAcl();"/>
  41. <p>
  42. <input type="button" value="Click to delete object" onclick="deleteObject();"/>
  43. </body>
  44. <script src="../dist/esdk-obs-browserjs.3.23.5.min.js"></script>
  45. <script type="text/javascript">
  46. /**
  47. * This sample demonstrates how to do object-related operations
  48. * (such as create/delete/get/copy object, do object ACL)
  49. * on OBS using the OBS SDK for BrowserJS.
  50. */
  51. function getObsClient(){
  52. /*
  53. * Initialize a obs client instance with your account for accessing OBS
  54. */
  55. var ak = document.getElementById('ak').value;
  56. var sk = document.getElementById('sk').value;
  57. var server = document.getElementById('server').value;
  58. return new ObsClient({
  59. access_key_id: ak,
  60. secret_access_key: sk,
  61. server : server,
  62. timeout : 60 * 5,
  63. });
  64. }
  65. /*
  66. * Put object
  67. */
  68. function putObject(){
  69. var bucketName = document.getElementById('bucketname').value;
  70. var objectKey = document.getElementById('objectkey').value;
  71. var obs = getObsClient();
  72. obs.putObject({
  73. Bucket: bucketName,
  74. Key : objectKey,
  75. Body : 'Hello OBS'
  76. }).then(function(result) {
  77. if(result.CommonMsg.Status < 300){
  78. console.log('Create object:' + objectKey + ' successfully!\n');
  79. }
  80. });
  81. }
  82. /*
  83. * Get object metadata
  84. */
  85. function getObjectMetadata(){
  86. var bucketName = document.getElementById('bucketname').value;
  87. var objectKey = document.getElementById('objectkey').value;
  88. var obs = getObsClient();
  89. obs.getObjectMetadata({
  90. Bucket: bucketName,
  91. Key : objectKey
  92. }).then(function(result) {
  93. if(result.CommonMsg.Status < 300){
  94. console.log('Get object metadata');
  95. console.log('\tETag-->' + result.InterfaceResult.ETag);
  96. console.log('\tContentLength-->' + result.InterfaceResult.ContentLength);
  97. console.log('\n');
  98. }
  99. });
  100. }
  101. /*
  102. * Get object
  103. */
  104. function getObject(){
  105. var bucketName = document.getElementById('bucketname').value;
  106. var objectKey = document.getElementById('objectkey').value;
  107. var obs = getObsClient();
  108. obs.getObject({
  109. Bucket: bucketName,
  110. Key : objectKey
  111. }).then(function(result){
  112. if(result.CommonMsg.Status < 300){
  113. console.log('Get object content');
  114. console.log('\tContent-->' + result.InterfaceResult.Content);
  115. console.log('\n');
  116. }
  117. });
  118. }
  119. /*
  120. * Copy object
  121. */
  122. function copyObject(){
  123. var bucketName = document.getElementById('bucketname').value;
  124. var objectKey = document.getElementById('objectkey').value;
  125. var obs = getObsClient();
  126. obs.copyObject({
  127. Bucket: bucketName,
  128. Key: objectKey + '-back',
  129. CopySource : bucketName + '/' + objectKey,
  130. MetadataDirective : obs.enums.CopyMetadata
  131. }).then(function(result) {
  132. if(result.CommonMsg.Status < 300){
  133. console.log('Copy object');
  134. console.log('\tETag-->' + result.InterfaceResult.ETag);
  135. console.log('\n');
  136. }
  137. });
  138. }
  139. /*
  140. * Put/Get object acl operations
  141. */
  142. function doObjectAcl(){
  143. var bucketName = document.getElementById('bucketname').value;
  144. var objectKey = document.getElementById('objectkey').value;
  145. var obs = getObsClient();
  146. obs.setObjectAcl({
  147. Bucket: bucketName,
  148. Key: objectKey,
  149. ACL : obs.enums.AclPublicRead
  150. }).then(function(result) {
  151. if(result.CommonMsg.Status < 300){
  152. console.log('Set object ACL to ' + obs.enums.AclPublicRead + ' finished. \n');
  153. obs.getObjectAcl({
  154. Bucket: bucketName,
  155. Key: objectKey
  156. }).then(function(result) {
  157. console.log('Get object ACL:');
  158. console.log('\tOwner[ID]-->' + result.InterfaceResult.Owner.ID);
  159. console.log('\tOwner[Name]-->' + result.InterfaceResult.Owner.Name);
  160. console.log('\tGrants:');
  161. var i=0;
  162. for(;i<result.InterfaceResult.Grants.length;i++){
  163. console.log('\tGrant[' + i + ']:');
  164. console.log('\tGrantee[ID]-->' + result.InterfaceResult.Grants[i]['Grantee']['ID']);
  165. console.log('\tGrantee[Name]-->' + result.InterfaceResult.Grants[i]['Grantee']['Name']);
  166. console.log('\tGrantee[URI]-->' + result.InterfaceResult.Grants[i]['Grantee']['URI']);
  167. console.log('\tPermission-->' + result.InterfaceResult.Grants[i]['Permission']);
  168. }
  169. console.log('\n');
  170. });
  171. }
  172. });
  173. }
  174. /*
  175. * Delete object
  176. */
  177. function deleteObject(){
  178. var bucketName = document.getElementById('bucketname').value;
  179. var objectKey = document.getElementById('objectkey').value;
  180. var obs = getObsClient();
  181. obs.deleteObject({
  182. Bucket: bucketName,
  183. Key: objectKey
  184. }).then(function(result) {
  185. if(result.CommonMsg.Status < 300){
  186. console.log('Delete object ' + objectKey + ' finished.\n');
  187. }
  188. obs.deleteObject({
  189. Bucket: bucketName,
  190. Key: objectKey + '-back'
  191. }).then(function(result) {
  192. if(result.CommonMsg.Status < 300){
  193. console.log('Delete object ' + objectKey + '-back' + ' finished.\n');
  194. }
  195. });
  196. });
  197. }
  198. </script>
  199. </html>