五、java操作swift对象存储(官网样例)
时间:2021-07-26
本文章向大家介绍五、java操作swift对象存储(官网样例),主要包括五、java操作swift对象存储(官网样例)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
系列导航
swift的官方提供了一些java操作swift对象存储的操作方法,但是内容比较简单稍微复杂的没有找到合适的样例,后面我会使用http请求的方式实现
一、jar包
org-json.jar 需要使用maven的同学们自己找到依赖转换一下就可以
二、基础方法
package base; //官网的操作样例 import org.javaswift.joss.client.core.ContainerPaginationMap; import org.javaswift.joss.client.factory.AccountConfig; import org.javaswift.joss.client.factory.AccountFactory; import org.javaswift.joss.client.factory.AuthenticationMethod; import org.javaswift.joss.model.Account; import org.javaswift.joss.model.Container; import org.javaswift.joss.model.PaginationMap; import org.javaswift.joss.model.StoredObject; import java.io.File; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; public class SwiftClientWork { private static final String module = SwiftClientWork.class.getName(); static String authurl = "http://192.168.0.1:8080/auth/v1.0"; static String username = "admin:admin"; static String password = "admin"; /** * 身份证存储容器 */ static Account account ; private static SwiftClientWork instance = null; public static synchronized SwiftClientWork getInstance(){ if(instance==null){ instance = new SwiftClientWork(); } return instance; } static { try{ AccountConfig config = new AccountConfig(); config.setUsername(username); config.setPassword(password); config.setAuthUrl(authurl); config.setAuthenticationMethod(AuthenticationMethod.BASIC); account = new AccountFactory(config).createAccount(); }catch (Exception e){ e.printStackTrace(); } } //给账户设置Temp-Url-Key public void setTempUrlKey(String key){ account.setAndSaveMetadata("Temp-Url-Key", key); System.out.println(account.getMetadata()); } /** * CREATE A CONTAINER * @param containerName */ public void createContainer(String containerName){ try{ Container container = account.getContainer(containerName); container.create(); }catch (Exception e){ e.printStackTrace(); } } /** * DELETE A CONTAINER * @param containerName */ public void deleteContainer(String containerName){ try{ Container container = account.getContainer(containerName); container.delete(); }catch (Exception e){ e.printStackTrace(); } } /** * CREATE AN OBJECT * @param containerName * @param objectName * @param inFilePath */ public StoredObject createObject(String containerName, String objectName, String inFilePath){ try{ /** StoredObject object = container.getObject("dog.png"); object.uploadObject(new File("/dog.png")); System.out.println("Public URL: "+object.getPublicURL()); */ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); object.uploadObject(new File(inFilePath)); /*InputStream input = new FileInputStream(new File(inFilePath)); object.uploadObject(input); input.close();*/ /*System.out.println("Public URL: "+object.getPublicURL()); System.out.println("Last modified: "+object.getLastModified()); System.out.println("ETag: "+object.getEtag()); System.out.println("Content type: "+object.getContentType()); System.out.println("Content length: "+object.getContentLength());*/ return object; }catch (Exception e){ e.printStackTrace(); } return null; } /** * * @param containerName * @param objectName * @param inFile * @return */ public StoredObject createObject(String containerName, String objectName, File inFile){ try{ /** StoredObject object = container.getObject("dog.png"); object.uploadObject(new File("/dog.png")); System.out.println("Public URL: "+object.getPublicURL()); */ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); object.uploadObject(inFile); /*InputStream input = new FileInputStream(new File(inFilePath)); object.uploadObject(input); input.close();*/ /*System.out.println("Public URL: "+object.getPublicURL()); System.out.println("Last modified: "+object.getLastModified()); System.out.println("ETag: "+object.getEtag()); System.out.println("Content type: "+object.getContentType()); System.out.println("Content length: "+object.getContentLength());*/ return object; }catch (Exception e){ e.printStackTrace(); } return null; } /** * ADD/UPDATE OBJECT METADATA * @param containerName * @param objectName * @param metadatas */ public void addOrUpdateObjectMetadata(String containerName, String objectName, Map<String, Object> metadatas){ try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); Map<String, Object> metadata = new TreeMap<String, Object>(); for(String key: metadatas.keySet()){ String value = metadatas.get(key).toString(); System.out.println("key:"+key+" vlaue:"+value); metadata.put(key, value); } //Map<String, Object> metadata = new TreeMap<String, Object>(); //metadata.put("key", "value"); object.setMetadata(metadata); }catch (Exception e){ e.printStackTrace(); } } //上传一个带属性值的对象 public StoredObject createObjectWithMetadata(String containerName, String objectName, String inFilePath, Map<String, Object> metadatas){ try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); object.uploadObject(new File(inFilePath)); Map<String, Object> metadata = new TreeMap<String, Object>(); for(String key: metadatas.keySet()){ String value = metadatas.get(key).toString(); System.out.println("key:"+key+" vlaue:"+value); metadata.put(key, value); } object.setMetadata(metadata); return object; }catch (Exception e){ e.printStackTrace(); } return null; } /** * LIST OWNED CONTAINERS */ public Collection<Container> containerList(){ try{ Collection<Container> containers = account.list(); for (Container currentContainer : containers) { System.out.println(currentContainer.getName()); } return containers; }catch (Exception e){ e.printStackTrace(); } return null; } /** * LIST A CONTAINER’S CONTENT * @param containerName * @return */ public Collection<StoredObject> containerObjects(String containerName){ try{ Container container = account.getContainer(containerName); Collection<StoredObject> objects = container.list(); for (StoredObject currentObject : objects) { System.out.println(currentObject.getName()); } return objects; }catch (Exception e){ e.printStackTrace(); } return null; } /** * LIST A CONTAINER’S CONTENT * @param containerName * @param prefix * @param pageSize * @return */ public void containerObjectsPage(String containerName,String prefix,int pageSize){ try{ Container container = account.getContainer(containerName); //ContainerPaginationMap(Container container, String prefix, Integer pageSize) PaginationMap paginationMap = new ContainerPaginationMap(container,prefix,pageSize); //list(PaginationMap paginationMap, int page) //Returns a number equal to pageSize of Container elements, starting with the first element after the Container named the same as marker. //后面这个参数经过测试不起任何作用 Collection<StoredObject> objects =container.list(paginationMap,50000); for (StoredObject currentObject : objects) { System.out.println(currentObject.getName()); } /* Iterator iter = container.list(paginationMap,1).iterator(); while(iter.hasNext()){ StoredObject object = (StoredObject) iter.next(); String fileName = object.getName(); System.out.println(fileName); } */ }catch (Exception e){ e.printStackTrace(); } } public Map getObjectMetadaTest(String containerName, String objectName) { try { Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); Map<String, Object> returnedMetadata = object.getMetadata(); // for (String name : returnedMetadata.keySet()) { // System.out.println("META / " + name + ": " + returnedMetadata.get(name)); // } return returnedMetadata; } catch (Exception e) { System.out.println("该对象没有元数据属性------------->"); //e.printStackTrace(); } return null; } /** * RETRIEVE AN OBJECT’S METADATA * @param containerName * @param objectName */ public void getObjectMetada(String containerName, String objectName){ try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); Map<String, Object> returnedMetadata = object.getMetadata(); for (String name : returnedMetadata.keySet()) { System.out.println("META / "+name+": "+returnedMetadata.get(name)); } }catch (Exception e){ e.printStackTrace(); } } /** * RETRIEVE AN OBJECT * @param containerName * @param objectName * @param downPath */ public void getObject(String containerName, String objectName, String downPath){ try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); object.downloadObject(new File(downPath)); /*System.out.println("Public URL: "+object.getPublicURL()); System.out.println("Last modified: "+object.getLastModified()); System.out.println("ETag: "+object.getEtag()); System.out.println("Content type: "+object.getContentType()); System.out.println("Content length: "+object.getContentLength());*/ }catch (Exception e){ e.printStackTrace(); } } /** * DELETE AN OBJECT * @param containerName * @param objectName */ public void deleteObject(String containerName, String objectName){ try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); object.delete(); }catch (Exception e){ e.printStackTrace(); } } //获取get权限的tempurl //second 有效时间 单位秒 public void getObjectGetTempUrl(String containerName, String objectName,int second ){ try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); String url=object.getTempGetUrl(second); url = url +"&inline"; System.out.println(url); }catch (Exception e){ e.printStackTrace(); } } //获取put权限的tempurl //second 有效时间 单位秒 public void getObjectPutTempUrl(String containerName, String objectName,int second ){ try{ Container container = account.getContainer(containerName); StoredObject object = container.getObject(objectName); String url=object.getTempPutUrl(second); url = url +"&inline"; System.out.println(url); }catch (Exception e){ e.printStackTrace(); } } }
三、调用的主方法
package mian; import java.io.File; import java.util.HashMap; import java.util.Map; import org.javaswift.joss.model.Container; import org.javaswift.joss.model.StoredObject; import base.SwiftClientWork; //官网操作swift 调用 public class SwiftClientWorkMain { /** * @param args */ public static void main(String[] args) { SwiftClientWork swiftClientWork = new SwiftClientWork(); //创建容器 swiftClientWork.createContainer("Container1"); //删除容器 swiftClientWork.deleteContainer("Container1"); //上传对象(本地文件路径上传) swiftClientWork.createObject("Container1", "1.zip", "E://1//1.zip"); //上传对象(本地文件路径上传) File file = new File("E://1//1.zip"); swiftClientWork.createObject("Container1", "2.zip", file); //给现有的对象增加后者更新属性 Map<String, Object> map = new HashMap<String, Object>(); map.put("id", "123123123"); swiftClientWork.addOrUpdateObjectMetadata( "Container1","2.zip", map); //上传一个带属性值的对象 Map<String, Object> map = new HashMap<String, Object>(); map.put("id", "123123123"); swiftClientWork.createObjectWithMetadata("Container1","3.zip", "E://1//1.zip" ,map ); //查看容器列表 swiftClientWork.containerList(); //查看容器中的对象列表 swiftClientWork.containerObjects("containerName1"); //对容器中的对象可以进行前缀和返回条数的限制 如下:对象名称前缀为3 且结果值返回5条记录 swiftClientWork.containerObjectsPage("containerName1","3",5); //查看对象的属性 swiftClientWork.getObjectMetada("Container1","3.zip"); //下载对象 swiftClientWork.getObject( "Container1","3.zip","E://8.zip"); //删除对象 swiftClientWork.deleteObject( "Container1","3.zip"); //获取tempurl测试 swiftClientWork.getObjectTempUrl("bigContainer", "1.jpg",600 ); } }
原文地址:https://www.cnblogs.com/yclh/p/15061005.html
- Buffered channel、slice和mutex的简单性能测试
- 原子读写性能简单测试
- 从小白变RSA大神,附常用工具使用方法及CTF中RSA典型例题
- select多路选择的模拟实现
- 初学者需要注意的问题-变量的作用域
- 在 Go 语言中,正确的使用并发
- Injectify:一款执行MiTM攻击的工具
- 看我如何发现Google云平台漏洞并获得$7500赏金
- Go语言写Web 应用程序
- 小萝莉说Crash(一):Unrecognized selector sent to instance xxxx
- 游戏服务器之多线程发送(上)
- 游戏服务器之多线程发送(中)
- 游戏服务器之多线程发送(下)
- 【团队分享】手机QQ:升级iOS8.3后,发图就崩,为哪般?
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PHP _construct()函数讲解
- PHP PDOStatement::rowCount讲解
- Python 如何对文件目录操作
- Python字符串split及rsplit方法原理详解
- Laravel框架文件上传功能实现方法示例
- python中如何写类
- 什么是PHP7中的孤儿进程与僵尸进程
- Python爬虫小例子——爬取51job发布的工作职位
- 详解PHP素材图片上传、下载功能
- Python enumerate() 函数如何实现索引功能
- python打开文件的方式有哪些
- PHP实现二维数组按照指定的字段进行排序算法示例
- python怎么自定义捕获错误
- Codeforces Round #677 (Div. 3)
- PHP PDOStatement::fetchObject讲解