结果图如下:

./rados -p default.rgw.buckets.data listomapkeysca1f567f-841f-415f-bb5d-5fd1cfe9e757.14107.1_1.mp4

ca1f567f-841f-415f-bb5d-5fd1cfe9e757.14107.1_1.mp4 相当于是字典,这个是存入的object的head object.

default.rgw.torrent 是字典中的单词

torrent data 是字典内容

查看torrent数据文件命令:

./rados -p default.rgw.buckets.data listomapvals ca1f567f-841f-415f-bb5d-5fd1cfe9e757.14107.1_1.mp4

在put object时保存torrent data到omap中的代码实现:

代码是在put object中实现的

if (ofs == torrent.get_data_len())
  {
    rgw_obj obj(s->bucket, s->object.name);    
    bufferlist bl_torrent;
    uint64_t total_len = 0;
    torrent.init(s, store);

op_ret =  torrent.handle_data(bl_torrent, total_len, obj);--------------------调用了下面的函数
    if (0 != op_ret)
    {
      INFO "handle_data fail op_ret= "<<op_ret<<dendl;
      goto done;
    }
    INFO "produce torrent file success total_len= "<< total_len << dendl;
  }

如何获取到存在OMAP中的数据呢?调用如下方法,在get object中实现

// start gettorrent

if (torrent.get_flag())

{

torrent.get_torrent_file(op_ret, read_op, total_len, bl, obj);

if (op_ret < 0)

{

ldout(s->cct, 0) << "ERROR: failed to get_torrent_file ret= " << op_ret

<< dendl;

goto done_err;

}

op_ret = send_response_data(bl, 0, total_len);

if (op_ret < 0)

{

ldout(s->cct, 0) << "ERROR: failed to send_response_data ret= " << op_ret

<< dendl;

goto done_err;

}

return;

}

// end gettorrent

void seed::get_torrent_file(int &op_ret, RGWRados::Object::Read &read_op, uint64_t &total_len,

bufferlist &bl_data, rgw_obj &obj)

{

string oid, key;

rgw_bucket bucket;

map<string, bufferlist> m;

set<string> obj_key;

get_obj_bucket_and_oid_loc(obj, bucket, oid, key);----------------获取oid也就是之前的  ca1f567f-841f-415f-bb5d-5fd1cfe9e757.14107.1_1.mp4

INFO "oid = " <<  oid << dendl;

obj_key.insert(RGW_OBJ_TORRENT);

op_ret = read_op.state.io_ctx.omap_get_vals_by_keys(oid, obj_key, &m);

if (op_ret < 0)

{

INFO "failed to omap_get_all ret=" << op_ret << dendl;

return;

}

map<string, bufferlist>::iterator iter;

for (iter = m.begin(); iter != m.end(); ++iter)

{

bufferlist bl_tmp = iter->second;

char *pbuff = bl_tmp.c_str();

bl.append(pbuff, bl_tmp.length());

}

bl_data = bl;

total_len = bl.length();

return;

}

在omap上存储和获取文件相关推荐

  1. 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 ....

    平时根本没时间搞FTP什么的,现在这个项目需要搞FTP,为什么呢,我给大家说下项目背景,我们的一个应用程序上需要上传图片,但是用户部署程序的服务器上不让上传任何东西,给了我们一个FTP账号和密码,让我 ...

  2. springboot文件上传下载实战 ——文件上传、下载、在线打开、删除

    springboot文件上传下载实战 文件上传 文件上传核心 UserFileController 文件上传测试 文件下载与在线打开 文件下载.在线打开核心 UserFileController 文件 ...

  3. jquery ajax上传本地dwg文件到服务器.txt

    <!--只接受.dwg文件--> <input type="file" id="CADFile" accept=".dwg" ...

  4. java获取文件列表,[javaSE] java获取文件列表

    递归测试 import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Lis ...

  5. QT学习记录 --- 获取文件哈希值

    前言 本来想阐述一番,想了一哈,实在没啥说的,直接上代码了- 获取文件哈希函数 bool Widget::FileHash(QString srcDir) //参数为目标文件路径 {QFile fil ...

  6. 阿里云OSS文件上传存储和删除,获取文件外网访问路径

    因为项目中需要存储的数据主要是图片数据,所以使用阿里云提供的OSS存储,性价比高,也很简便.(本文一步一步操作指导最后成功都有截图) 前提工作: 已经在oss创建了bucket,就是一个项目的意思.并 ...

  7. C# ASP.NET MVC 图片上传的多种方式(存储至服务器文件夹,阿里云oss)

    图片上传时我们进场用到的一个功能今天将他整理了一下写了个demo希望对大家有用 该demo分为如下 1.上传至至服务器文件夹 2.上传至阿里云oss 3.百度webupload上传图片 效果图如下: ...

  8. restfull服务器端获取文件,使用 FileREST API (获取文件服务) - Azure 文件存储 | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 获取文件服务属性 06 ...

  9. Java实现图片文件的上传和获取

    在做一个网站开发时,难免会遇到图片等文件的上传和获取,举一个简单的例子,就是用户的头像问题,我们应该怎么上传,怎么获取,上传到哪呢,等一系列的问题,其实像图片这些文件,存储在云存储空间比较合适,但是收 ...

最新文章

  1. web farm 讨论引出
  2. sonar 不再支持 cobertura 插件(sonar支持的插件表)
  3. java单例代码_java中的单例模式的代码怎么写
  4. C# 中使用面向切面编程(AOP)中实践代码整洁
  5. Python3 Flask+nginx+Gunicorn部署(上)
  6. html xpath java_Java根据XPath提取HTML
  7. java 植入 form_pdf form表单制作以及用java程序填充表单
  8. scala 基础 ——关键字与特殊符号
  9. 熟悉 CMake(二)—— 以一个实例说明 CMakeLists.txt 文件的编写
  10. Hibernate之持久化对象
  11. bzoj 2844: albus就是要第一个出场
  12. 神舟测试软件,神舟战神P5常规性能软件测试_神舟 战神P5-i78172D1_笔记本评测-中关村在线...
  13. 升压电路的原理-原文地址:http://www.52solution.com/basic/1218
  14. STM32 CAN通讯过滤器使用总结及代码分析
  15. 程序员必备 代码比较工具 Beyond Compare 4
  16. 数据结构与算法分析(十七)--- 怎么用回溯剪枝高效穷举所有可行解?
  17. 在设计条形音箱时,确保您的无线技术能够提供最高质量的、可靠的音频
  18. 老虎机数字抽奖(可控制结果)
  19. Java生成条形码图片到本地
  20. C、C++、C#、Java、php、python语言的内在特性及区别

热门文章

  1. 解决QT工具栏字体变大的问题
  2. Flutter Channel stable, 0.0.0-unknown, on Microsoft Windows [Version 10.0.18362.1016]
  3. 免费ssl证书申请地址大全
  4. C/C++语言实现一百个数组之间求任意数组的交集和并集
  5. 学习SQL Server推荐的10本书
  6. Excel(WPS部分功能不适用)技巧:快速找出重复值
  7. 科大讯飞CTR预估挑战赛Top3方案总结
  8. 怎样可以做到将CAD转换成图片
  9. java atan atan2_atan()与atan2()
  10. upstream模块详解