-
1 已存在对象如何修改对象名称目前已经上传到OBS桶中的对象名称是不可修改的(后续OBS会上线POSIX语义桶,可能会支持),如果想修改已经存在的对象名称,可以通过复制旧对象到新对象,再将旧对象删除来实现。以OBS JAVA SDK为例,复制对象操作,参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815454.html;删除对象操作,参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815453.html。2 已存在对象如何修改对象属性对象元数据有很多,比如Object文件类型Content-Type、指定Object被下载时的网页的缓存行为Cache-Control、还可以自定义元数据x-obs-meta-*,具体可以参考API接口链接说明:https://support.huaweicloud.com/api-obs/zh-cn_topic_0137044900.html。已经上传到OBS桶中的对象属性不可以直接修改,(后续OBS SDK会上线此功能),目前可通过带对象属性覆盖上传同名对象来达到效果(参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815529.html),也可以通过带对象属性复制同名对象来达到效果(参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815454.html)。注:若OBS桶开启了多版本,通过对象覆盖对象和复制对象来达到修改对象属性时若不带版本进行操作,会产生多余的新版本对象,占用额外的存储空间3 附录链接OBS JAVA SDK使用方法,官网参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815558.html
-
1 背景介绍 & 效果展示OBS提供三种存储类型:标准存储、低频访问存储或归档存储。低频访问存储的对象可以修改为标准存储或归档存储的对象。归档存储的对象要先恢复,才可以修改为标准存储或低频访问存储。本文通过JAVA SDK实现将对象从标准存储转换为归档存储,以及归档存储到低频访问存储的转换,效果如下。注:有关标准存储、低频访问、归档存储三种存储类型的更多信息,参考链接:https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0050321036.html图1 原始对象图2 对象从标准存储转换为归档存储图3 对象从归档存储转换为低频访问存储2 java代码参考(对象从标准存储转换为归档存储)前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。 public static void main(String[] args) throws IOException { // 需要将endPoint/ak/sk更新为实际信息 String endPoint = "https://your-endpoint"; String ak = "*** Provide your Access Key ***"; String sk = "*** Provide your Secret Key ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); try { String bucketName = "bucketXXX"; // 需要将bucketName更新为实际信息 String objectName = "objectXXX"; // 需要将objectName更新为实际信息CopyObjectRequest request = new CopyObjectRequest(bucketName, objectName, bucketName, objectName); request.setReplaceMetadata(true); ObjectMetadata newObjectMetadata = new ObjectMetadata(); newObjectMetadata.setContentType("image/jpeg"); // 修改对象的ContentType newObjectMetadata.setObjectStorageClass(StorageClassEnum.COLD); // 转换为归档存储 request.setNewObjectMetadata(newObjectMetadata); CopyObjectResult result = obsClient.copyObject(request); System.out.println("\t" + result.getStatusCode()); } catch (Ob**ception e) { System.out.println("Response Code: " + e.getResponseCode()); System.out.println("Error Message: " + e.getErrorMessage()); System.out.println("Error Code: " + e.getErrorCode()); System.out.println("Request ID: " + e.getErrorRequestId()); System.out.println("Host ID: " + e.getErrorHostId()); } }3 java代码参考(对象从归档存储转换为低频访问存储)前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。 public static void main(String[] args) throws IOException { // 需要将endPoint/ak/sk更新为实际信息 String endPoint = "https://your-endpoint"; String ak = "*** Provide your Access Key ***"; String sk = "*** Provide your Secret Key ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); try { String bucketName = "bucketXXX"; // 需要将bucketName更新为实际信息 String objectName = "objectXXX"; // 需要将objectName更新为实际信息 // 快速取回归档对象RestoreObjectRequest request1 = new RestoreObjectRequest(); request1.setBucketName(bucketName); request1.setObjectKey(objectName); request1.setDays(1); request1.setRestoreTier(RestoreTierEnum.EXPEDITED); obsClient.restoreObjectV2(request1); // 等待对象取回 Thread.sleep(60 * 6 * 1000); CopyObjectRequest request = new CopyObjectRequest(bucketName, objectName, bucketName, objectName); ObjectMetadata newObjectMetadata = new ObjectMetadata(); newObjectMetadata.setObjectStorageClass(StorageClassEnum.WARM); // 转换为低频访问存储 request.setNewObjectMetadata(newObjectMetadata); CopyObjectResult result = obsClient.copyObject(request); System.out.println("\t" + result.getStatusCode()); } catch (Ob**ception e) { System.out.println("Response Code: " + e.getResponseCode()); System.out.println("Error Message: " + e.getErrorMessage()); System.out.println("Error Code: " + e.getErrorCode()); System.out.println("Request ID: " + e.getErrorRequestId()); System.out.println("Host ID: " + e.getErrorHostId()); } }4 附录链接OBS JAVA SDK使用方法,官网参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815558.html
-
1 背景介绍 & 效果展示通过JAVA SDK可判断文件是否存在,并不需要下载对象操作,如果对象存在会返回对象的类型和对象大小,若对象不存在则返回相应的错误码,效果如下。图1 对象存在会返回对象的类型和对象大小图2 对象不存在则返回相应的错误码2 java代码参考前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。 public static void main(String[] args) throws IOException { // 需要将endPoint/ak/sk更新为实际信息 String endPoint = "https://your-endpoint"; String ak = "*** Provide your Access Key ***"; String sk = "*** Provide your Secret Key ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); try { String bucketName = "bucketXXX"; // 需要将bucketName更新为实际信息 String objectName = "objectXXX"; // 需要将objectName更新为实际信息 ObjectMetadata metadata = obsClient.getObjectMetadata(bucketName, objectName); System.out.println("---------------\nobject exist!"); System.out.println("\tcontentType: " + metadata.getContentType()); System.out.println("\tcontentLength: " + metadata.getContentLength()); } catch (Ob**ception e) { System.out.println("Response Code: " + e.getResponseCode()); System.out.println("Error Message: " + e.getErrorMessage()); System.out.println("Error Code: " + e.getErrorCode()); System.out.println("Request ID: " + e.getErrorRequestId()); System.out.println("Host ID: " + e.getErrorHostId()); if(e.getResponseCode() == 404) { System.out.println("---------------\nobject doesn't exist!"); } } }3 附录链接OBS JAVA SDK使用方法,官网参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815558.html
-
1 背景介绍 & 效果展示我们经常在电商购物时,当鼠标滑过物品展示图时,会在展示图旁边显示一个图片局部放大的效果图。本文利用OBS BrowserJS SDK上传图片对象到OBS,结合HTML5 Canvas特性可轻松实现“放大镜”效果。效果展示页面已经托管到OBS桶,访问地址:https://static-web-chongchong.obs-website.cn-north-1.myhuaweicloud.com/注:更多关于静态网站托管信息,可参考链接https://bbs.huaweicloud.com/forum/thread-15492-1-1.html图1 默认图片效果展示图2 方法一:通过上传本地图片文件进行展示首先点击“选择文件”按钮选择本地图片文件,单击“点击上传”按钮,待按钮下方显示100%进度完成后,单击“显示图片”即可以看到展示效果。(若图片较大,加载时需要点时间,请耐心等待)图3 方法二:通过已有的图片URL链接显示首先在文件框中输入可用的图片URL链接,单击“显示链接图片”按钮即可以看到展示效果。(若图片较大,加载时需要点时间,请耐心等待)注:针对已经上传到OBS的图片,其URL链接可通过OBS的“分享文件”功能获取(可参考链接https://support.huaweicloud.com/usermanual-obs/obs_03_0046.html),也可以直接在匿名可读的对象上获取URL链接(可参考链接https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829105.html)2 代码参考工具由Magnifier.html、以及子目录下Magnify的OBS BrowserJS SDK库文件、CSS文件、JS文件构成。所有的代码可在打开效果展示页面后(访问地址:https://static-web-chongchong.obs-website.cn-north-1.myhuaweicloud.com/),浏览器中打开F12调试页面获取。3 附录链接OBS BrowserJS SDK 下载和使用,官网参考链接:https://support.huaweicloud.com/sdk-browserjs-devg-obs/zh-cn_topic_0125029729.html
-
华为公有云OBS服务的SDK集成好后,可以直接用于对接HIS 对象存储服务吗?或者反过来,HIS S3对象存储的SDK集成好后,能直接用于对接华为公有云的OBS服务吗?两者是否都是标准的AWS S3接口呀?非常感谢~
-
1 背景介绍 & 效果展示可以通过JAVA SDK,列举指定目录下的所有文件,也可以列举指定目录下的文件和子目录,效果如下。图1 指定目录share/下的所有文件图2 列举指定目录下的所有文件图3 列举指定目录下的文件和子目录2 java代码参考(列举指定目录下的文件和子目录)前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。 String endPoint = "https://your-endpoint"; String ak = "*** Provide your Access Key ***"; String sk = "*** Provide your Secret Key ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); ListObjectsRequest request = new ListObjectsRequest("chongchongtest"); // 设置文件夹对象名"share/"为前缀 request.setPrefix("share/"); request.setMaxKeys(1000); ObjectListing result; System.out.println("Objects:"); do{ result = obsClient.listObjects(request); for (ObsObject obsObject : result.getObjects()) { System.out.println("\t" + obsObject.getObjectKey()); } System.out.println("------------------------------"); request.setMarker(result.getNextMarker()); }while(result.isTruncated()); 3 java代码参考(列举指定目录下的所有文件)前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。String endPoint = "https://your-endpoint"; String ak = "*** Provide your Access Key ***"; String sk = "*** Provide your Secret Key ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); ListObjectsRequest request = new ListObjectsRequest("chongchongtest"); // 设置文件夹对象名"share/"为前缀 request.setPrefix("share/"); request.setDelimiter("/"); request.setMaxKeys(500); ObjectListing result; // 列举文件 System.out.println("Objects:"); do{ result = obsClient.listObjects(request); for (ObsObject obsObject : result.getObjects()) { System.out.println("\t" + obsObject.getObjectKey()); } System.out.println("------------------------------"); request.setMarker(result.getNextMarker()); }while(result.isTruncated()); // 列举子目录 System.out.println("\nFolder:"); do{ result = obsClient.listObjects(request); for (String commonPrefix : result.getCommonPrefixes()) { System.out.println("\t" + commonPrefix); } System.out.println("------------------------------"); request.setMarker(result.getNextMarker()); }while(result.isTruncated());4 附录链接OBS JAVA SDK 列举对象其它使用方法,官网参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815500.html
-
OBS JAVA SDK 实践4:统计指定目录下的文件和子目录大小1 背景介绍 & 效果展示可以通过JAVA SDK统计指定目录下的文件和子目录大小,效果如下。图1 指定目录share/下的所有文件图2 统计指定目录下的文件和子目录大小2 java代码参考前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。 public static void main(String[] args) throws IOException { String endPoint = "https://your-endpoint"; String ak = "*** Provide your Access Key ***"; String sk = "*** Provide your Secret Key ***"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); String bucketName = "chongchongtest"; ListObjectsRequest request = new ListObjectsRequest(bucketName); // 统计文件夹对象名"share/"下面的子目录和文件的大小 request.setPrefix("share/"); request.setDelimiter("/"); ObjectListing result; // 统计文件夹下对象的大小 System.out.println("Objects:"); do{ result = obsClient.listObjects(request); for (ObsObject obsObject : result.getObjects()) { double objectSize = obsObject.getMetadata().getContentLength() / 1024.0; System.out.println("\t" + obsObject.getObjectKey() + ": " + String.format("%.2f", objectSize) + "KB"); } System.out.println("------------------------------"); request.setMarker(result.getNextMarker()); }while(result.isTruncated()); // 统计子目录的大小 System.out.println("\nFolder:"); do{ result = obsClient.listObjects(request); for (String commonPrefix : result.getCommonPrefixes()) { double objectSize = countFolerLength(obsClient, bucketName, commonPrefix); System.out.println("\t" + commonPrefix + ": " + String.format("%.2f", objectSize) + "KB"); } System.out.println("------------------------------"); request.setMarker(result.getNextMarker()); }while(result.isTruncated()); } //统计每个子目录的大小 private static double countFolerLength(ObsClient obsClient, String bucketName, String folder) { double size = 0L; ListObjectsRequest request = new ListObjectsRequest(bucketName); request.setPrefix(folder); ObjectListing result; do{ result = obsClient.listObjects(request); for (ObsObject obsObject : result.getObjects()) { size += obsObject.getMetadata().getContentLength() / 1024.0; } request.setMarker(result.getNextMarker()); }while(result.isTruncated()); return size; } 3 附录链接OBS JAVA SDK 列举对象其它使用方法,官网参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815500.html
-
1 背景介绍目前OBS只支持删除空桶,如果桶中有数据,需要先删除桶中所有数据(包含多版本),之后才能删除桶。下面的代码模拟桶删的功能,展示如何一步到位删除非空桶。2 效果展示这里桶obs-chongchong-guangzhou桶中有约2000个对象数据,多个文件夹 使用代码进行桶删后,在桶列表中已经找不到此桶3 java代码参考前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。import java.io.IOException;import com.obs.services.ObsClient;import com.obs.services.ObsConfiguration;import com.obs.services.exception.Ob**ception;import com.obs.services.model.DeleteObjectsRequest;import com.obs.services.model.DeleteObjectsResult;import com.obs.services.model.ListVersionsRequest;import com.obs.services.model.ListVersionsResult;import com.obs.services.model.VersionOrDeleteMarker; public class BucketDelete { private static ObsClient obsClient; public static void main(String[] args) throws InterruptedException { try { String endPoint = "XXX"; // e.g "https://obs.cn-north-1.myhuaweicloud.com" String ak = "XXX"; // 对象所属的帐户ak String sk = "XXX"; // 对象所属的帐户sk String bucketName = "obs-chongchong-beijing"; // 需要填写为实际的桶名 obsClient = new ObsClient(ak, sk, endPoint); //列举桶中对象并删除 ListVersionsResult result = obsClient.listVersions(bucketName); if(result.getVersions().length != 0) { ListVersionsRequest request = new ListVersionsRequest(bucketName); // 设置每次批量删除500个对象 request.setMaxKeys(500); ListVersionsResult result1; do { result1 = obsClient.listVersions(request); DeleteObjectsRequest deleteRequest = new DeleteObjectsRequest(bucketName); for(VersionOrDeleteMarker v : result1.getVersions()) { deleteRequest.addKeyAndVersion(v.getKey(), v.getVersionId()); } DeleteObjectsResult deleteResult = obsClient.deleteObjects(deleteRequest); // 获取删除成功的对象 System.out.println(deleteResult.getDeletedObjectResults()); request.setKeyMarker(result1.getNextKeyMarker()); request.setVersionIdMarker(result1.getNextVersionIdMarker()); }while(result.isTruncated()); } //删除桶 obsClient.deleteBucket(bucketName); System.out.println("\n------------------\nbucket already delete."); } catch (Ob**ception e) { e.printStackTrace(); System.out.println("Response Code: " + e.getResponseCode()); System.out.println("Error Message: " + e.getErrorMessage()); System.out.println("Error Code: " + e.getErrorCode()); System.out.println("Request ID: " + e.getErrorRequestId()); System.out.println("Host ID: " + e.getErrorHostId()); } finally { if (obsClient != null) { try { obsClient.close(); } catch (IOException e) { } } } } } 4 附录链接OBS JAVA SDK使用,官网参考链接:https://support.huaweicloud.com/sdkreference-obs/obs_02_0001.html
-
1 背景介绍如果想授予其他用户带有图片处理功能的对象操作权限,可以通过OBS SDK生成带有鉴权信息的URL,同时指定URL的有效期来限制访问时长,之后便可将URL提供给其它用户进行临时访问。2 效果展示这里利用第3章中代码生成的URL链接,将该链接打开后的效果如下(将图片进行了30度旋转),链接有效时间设置的60S有效60s过期后,再打开此URL链接时返回访问失败3 java代码参考前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。 import java.io.IOException;import java.util.HashMap;import java.util.Map;import com.obs.services.ObsClient;import com.obs.services.ObsConfiguration;import com.obs.services.model.HttpMethodEnum;import com.obs.services.model.TemporarySignatureRequest;import com.obs.services.model.TemporarySignatureResponse; public class temp { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String endPoint = "XXX"; // e.g "https://obs.cn-north-1.myhuaweicloud.com" String ak = "XXX"; // 对象所属的帐户ak String sk = "XXX"; // 对象所属的帐户sk // 代理信息设置,没有不用设置 ObsConfiguration config = new ObsConfiguration(); config.setSocketTimeout(30000); config.setConnectionTimeout(10000); config.setEndPoint(endPoint); config.setHttpProxy(proxyAddr, proxyPort, userName, passWord); // 根据实际情况填写代理信息 ObsClient obsClient = new ObsClient(ak, sk, config); long expireSeconds = 60L; // 设置URL有效期,60秒 Mapmap = new HashMap map.put("x-image-process", "image/resize,w_1000/rotate,30"); // 设置图片处理的效果,此处为宽度调整为1000旋转30度 TemporarySignatureRequest request = new TemporarySignatureRequest(HttpMethodEnum.GET, expireSeconds); request.setBucketName("obs-test-chongchong"); // 需要填写为实际的桶名 request.setObjectKey("IMG_20190302_122501.jpg"); // 需要填写为实际的对象名 request.setQueryParams(map); TemporarySignatureResponse response = obsClient.createTemporarySignature(request); System.out.println("Getting object using temporary signature url:"); System.out.println("\t" + response.getSignedUrl()); // 输出临时URL }}4 附录链接OBS JAVA SDK使用,官网参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0073679956.htmlOBS 图片处理使用,官网参考链接:https://support.huaweicloud.com/fg-obs/obs_01_0001.html
chongchongly
发表于2019-06-17 16:20:41
2019-06-17 16:20:41
最后回复
chongchongly
2019-06-17 16:20:41
4759 0 -
想问一下有无springboot打包方法 按照网上的方法打包之后 52180 找不到主类 在jar中的Mainfest修改之后仍无法找到
-
关于华为提供的springboot SDK已经可以正常使用了 但是现在需要提取topic中的属性值 devicedatachang中有个println body的代码 但是在代码中实例子化之后打印毫无反应 hello都打印不了 516675166851669
-
arm-hisiv100nptl-linux-gcc 和 arm-hisiv300-linux-gcc编译的那三个库libcrypto.a、libssl.a、libuspsdk.a
-
【问题简要】手机端开发版本问题【问题类别】手机端开发问题【IPCC解决方案版本】IPCC V200R001C80SPC700【问题现象描述】长沙银行这边,手机参考开发版本:eSDK CC V200R001C00SPC001T安卓集成的sdk到项目有个问题,sdk里的.so文件是在低版本上编译的,现在我们项目引入的一些框架导致编译版本降不到.so的编译版本。所以现在集成进来运行时加载.so会报错xcode10 以后库文件里面不包含lstdc++.6.0.9 libstdc++这 2 个库文件请问安卓和IOS 客服视频的 SDK 是否可以提供最新的版本?
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
回顾中
热门标签