Object管理

对象存储 BOS

  • 产品公告
  • 功能发布记录
  • 产品描述
    • 使用限制
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
    • 核心概念
    • 分级存储介绍
      • 为什么会有分级存储
      • 存储类型介绍
  • S3
    • 兼容签名认证
    • 兼容接口
    • 兼容公共头
    • 兼容工具
    • 服务域名
    • 概述
  • 控制台操作指南
    • 查看并导出用量数据
    • 图片审核服务
    • 在线数据导入
    • 事件通知及数据处理
    • 操作准备
    • 配置BOS多用户访问控制
    • 联动百度网盘分享
    • 文件自动解压
    • 图片服务
    • 智能业务分析
    • 收藏路径
    • 分层命名空间存储桶操作说明
    • 额度管理
    • 统计与监控
    • 管理Bucket
      • 数据访问趋势分析
      • 设置跨域访问
      • Bucket概览
      • 请求者付费
      • 设置日志查询
      • 创建Bucket
      • Bucket额度管理
      • 删除Bucket
      • 管理Bucket标签
      • 设置回收站
      • 设置静态网站托管
      • 设置访问日志
      • 设置存储空间清单
      • 设置数据同步
      • 设置Referer白名单
      • 设置合规保留
      • 设置版本控制
      • 设置镜像回源
      • 设置服务端加密
      • 查询Bucket
      • 管理生命周期
        • 配置智能分层
        • 配置基础生命周期管理
        • 概述
        • 基础生命周期管理使用说明
          • 基于最后一次修改时间的生命周期规则
          • 基于最后一次访问时间的生命周期规则
      • 设置Bucket读写权限
        • 权限介绍
        • 设置Bucket读写权限
    • 管理Object
      • 设置文件权限
      • 文件夹分享
      • Select扫描
      • 分享文件-获取文件url
      • 对象标签
      • 设置Meta信息
      • 管理文件夹
      • 批量删除文件夹
      • 上传文件
      • 碎片管理
      • 下载文件
      • 转换文件存储类型
      • 重命名文件
      • 复制和移动文件
      • 删除文件
      • 文件夹统计
      • 取回归档文件
      • 查询Object
      • 批量管理Object
      • 设置软链接
    • 全局设置
      • VPC访问控制
    • 数据发布
      • 配置CDN上行加速
      • 创建Bucket自定义域名
      • 数据发布简介
      • 查看Bucket官方域名
      • 开通CDN官方加速域名
      • 配置缓存管理
      • 全球加速
  • 相关协议
    • 百度智能云对象存储联动百度网盘使用协议
  • 开发者指南
    • 基本概念
    • Region与Endpoint
    • 图像审核
    • 静态网站托管
    • 开发准备
    • 单链接限速
    • 监控服务操作
    • 事件通知
    • 数据容灾
      • 数据同步
      • 多AZ存储
    • 数据安全
      • 最小权限原则
      • 设置回收站
      • 设置防盗链
      • 设置服务端加密
      • 版本控制
        • 版本控制概述
        • 删除标记
      • 权限控制
        • IAM主子用户访问控制
        • Object权限控制
        • Bucket权限控制
    • 数据湖接入
      • 分层命名空间
      • 元数据转换服务
    • Bucket基本操作
      • 查看Bucket列表
      • 获取Bucket地域信息
      • 创建Bucket
      • 删除Bucket
      • 设置跨域资源共享
      • 设置访问日志
      • 数据发布
      • 管理生命周期
      • 设置Bucket标签
    • 数据生命周期管理
      • 智能业务分析
    • 数据发布
      • CDN加速发布
      • 绑定自定义域名
    • 数据迁移上云
      • 本地数据上云
      • 从其他云迁移
      • 场景概述
    • Object基本操作
      • 下载数据
        • 简单下载
        • 断点续传下载
      • 管理文件
        • 查看文件列表
        • Select扫描
        • 对象标签
        • 拷贝数据
        • 获取数据元信息
        • 删除数据
      • 上传数据
        • 上传回调
        • 追加上传
        • 表单上传
        • 分块及断点续传
        • 简单上传
  • 管理Bucket
    • Bucket概览
    • 请求者付费
    • 创建Bucket
    • Bucket额度管理
    • 删除Bucket
    • 管理Bucket标签
    • 设置回收站
    • 设置静态网站托管
    • 设置访问日志
    • 设置存储空间清单
    • 设置数据同步
    • 设置Referer白名单
    • 设置合规保留
    • 设置镜像回源
    • 设置服务端加密
    • .Archive
      • 设置跨域访问
      • Bucket概览
      • 请求者付费
      • 创建Bucket
      • Bucket额度管理
      • 删除Bucket
      • 管理Bucket标签
      • 设置回收站
      • 设置静态网站托管
      • 设置访问日志
      • 设置存储空间清单
      • 设置数据同步
      • 设置Referer白名单
      • 设置合规保留
      • 设置镜像回源
      • 设置服务端加密
      • 查询Bucket
    • 设置Bucket读写权限
      • 权限介绍
      • 设置Bucket读写权限
      • .Archive
        • 权限介绍
        • 设置Bucket读写权限
  • 数据处理
    • 图像处理名词解释
    • 视频即时转码
    • 获取视频元信息
    • 数据处理介绍
    • 视频截帧
    • 图像审核
    • 数据处理常见问题
    • 文档预览
    • 音视频处理
    • 智能识别
      • 概述
    • 图像通用设置
      • 原图保护
    • 图像处理指南V1.0
      • 质量变换
      • 格式转换
      • 获取图片信息
      • 使用规则
      • 水印
      • 图像缩略
      • 图像旋转
      • 渐近显示
      • 图像裁剪
    • 图像处理指南V2.0
      • 图像缩放
      • 质量变换
      • 格式转换
      • 图片模糊
      • 获取图片信息
      • 去除元信息
      • 图象缩放
      • 使用规则
      • 图片对比度
      • 图片亮度
      • 渐近显示
      • 图片锐化
      • 灰度变换
      • 智能处理
        • 智能处理使用规则
        • 智能效果
          • 智能去雾
          • 智能清晰度
          • 智能对比度
          • 智能调色
        • 智能场景
          • 拉伸恢复
          • 黑白上色
          • 物体擦除
          • 人像动漫化
          • 天空分隔
          • 风格转换
          • 无损放大
      • 图像水印
        • 添加图文混合水印
        • 添加图片水印
        • 添加文字水印
      • 图像旋转
        • 自适应旋转
        • 普通旋转
      • 图像裁剪
        • 索引裁剪
        • 内切圆裁剪
        • 圆角矩形裁剪
        • 普通裁剪
  • 内容审核
    • 图像审核
    • 视频审核
  • 周边工具
    • BOS-FTP工具
    • fsspec-bosfs
    • 周边工具概述
    • BOS-AlluxioExtension工具
    • 下载专区
    • BOS-PC客户端
      • 安装及登录
      • 使用指南
      • 常见问题
    • Docker
      • 概述
    • BOS-CLI命令行工具(旧版本)
      • 通过CLI使用BOS服务
      • 安装BOSCLI
      • 配置BOSCLI
      • 版本变更记录
      • 概述
    • BOS-HDFS工具
      • 配置和使用
      • 概述
      • 大数据组件使用指南
        • Presto使用指南
        • Hive使用指南
        • Flink使用指南
        • Impala使用指南
        • Spark使用指南
        • Flume数据存储到BOS
        • DataX读写BOS
    • BOS-CMD命令行工具
      • BOSCMD版本变更记录
      • 常见问题
      • 通过CMD使用BOS服务
      • 配置BOSCMD
      • 配置BCECMD命令行补全功能
      • BOS CMD常见问题
      • 安装BOSCMD
      • 概述
    • 第三方工具
      • rclone
      • S3 Browser
      • MinIO
      • 其他工具
      • Goofys
    • BOS-API生成工具
      • 概述
      • 图像审核服务接口
        • 图像审核接口
      • Bucket数据同步相关接口
        • 列举Bucket的所有replication同步规则
        • 设置Bucket数据同步
        • 获取Bucket数据同步信息
        • 获取Bucket指定id数据同步的进程状态
        • 删除Bucket的指定id的同步复制配置
      • 如何调用API
        • 鉴权认证
        • 构造请求
        • 返回响应
      • Service相关接口
        • 列举存储桶
        • 额度管理
          • 删除用户的额度设置
          • 设置用户的额度
          • 获取用户的额度信息
      • Object相关接口
        • 软链接
          • 创建软链接
          • 获取软链接
        • 基础操作
          • 获取对象的meta信息
          • 抓取Object并存储到Bucket中
          • 删除多个Object
          • 删除Object
          • 获取对象
          • 取回归档文件
        • 权限控制
          • 设置Object的访问权限
          • 获取Object的访问权限
          • 删除Object的访问权限
        • Select扫描
          • 向Object执行Sql语句
      • Bucket相关接口
        • 静态网站
          • 删除bucket的静态网站托管信息
          • 设置静态网站托管
          • 获取bucket的静态网站托管信息
        • 数据加密
          • 关闭bucket的服务端加密功能
          • 开启bucket的加密开关
          • 判断bucket的加密是否打开
        • 日志管理
          • 获取Bucket的访问日志配置
          • 开启Bucket的访问日志
          • 关闭Bucket的访问日志配置
        • 跨域访问
          • 获取指定Bucket上设定一个跨域资源共享规则
          • 在指定Bucket上设定一个跨域资源共享规则
          • 关闭指定Bucket上设定一个跨域资源共享规则
        • 基础操作
          • 获取bucket所在的区域
          • 创建存储桶
          • 删除存储桶
          • 查看Bucket是否存在和请求者是否有权限访问这个Bucket
          • 列举存储桶下的Object
          • 获取Bucket的默认存储类型
          • 列举存储桶
          • 跨域查询
          • 设置Bucket的默认存储类型
        • 事件通知
          • 推送ImageOcr和ImageClassify消息
          • 删除Bucket的通知规则
          • 获取Bucket的通知规则
          • 推送事件消息
          • 设置Bucket通知规则
        • 权限控制
          • 获取Bucket的访问权限
          • 设置Bucket的访问权限
        • 原图保护
          • 获取Bucket的原图保护配置情况
          • 开启Bucket的原图保护功能
          • 关闭Bucket的原图保护配置情况
        • 回收站
          • 开通Bucket回收站功能
          • 获取Bucket回收站的开通状态
          • 关闭Bucket回收站功能
        • 生命周期
          • 设置Bucket的生命周期
          • 获取Bucket的生命周期管理规则
          • 删除Bucket的生命周期管理规则
        • 合规保留
          • 锁定Bucket合规保留策略
          • 初始化合规保留策略
          • 删除合规保留策略
          • 获取Bucket合规保留策略
          • 延迟Bucket的合规保留策略保护周期
    • BOS-Probe错误检测工具
      • 通过BOSProbe检查上传下载
      • 安装BOSProbe
      • 建议及报告查看
      • 概述
    • BOS-FS挂载工具
      • 配置
      • 版本变更记录
      • 常见问题
      • 操作与实践
      • 安装
      • 概述
    • BOS Connector for PyTorch
      • 构建 Dataset
      • 读写 Checkpoint
      • 配置 BOS Connector for Pytorch
      • 功能及使用说明
      • 安装 BOS Connector for Pytorch
      • 性能测试
      • 概述
    • BOS-Util批量操作工具
      • 通过BOS-Util使用BOS服务
      • 版本变更记录
      • 安装BOS-Util
      • 概述
    • BOS-Import数据上云工具
      • 版本记录
      • 配置文件
      • 异常处理
      • 部署方式
      • 日志
      • 任务进度恢复
      • 概述
    • 月光宝盒物理迁移设备
      • 月光宝盒介绍
      • 月光宝盒操作流程
  • 安全与合规
    • 监控审计
    • 数据保护
    • 数据容灾
    • 访问控制
    • 数据保留合规
    • 数据加密
    • 概述
  • 快速入门
    • 开始使用BOS
    • 获取Object
    • 上传Object
    • 创建Bucket
    • 快速入门流程
    • 删除Object
    • 删除Bucket
  • 典型实践
    • 如何解决浏览器跨域CORS问题
    • CDN动态加速上传数据到BOS
    • 混合云中使用专线-VPN访问BOS
    • 通过安卓SDK使用HTTPDNS服务
    • 基于BOS的Presto实践
    • 将 BOS 作为 Jfrog Artifactory 的后端存储服务
    • 防盗链
    • BOS专线回源IDC最佳实践
    • AWS-lambda同步S3数据到BOS
    • 客户端加密实践
    • 基于BOS的Impala实践
    • 使用CDN加速BOS
    • HTTPS传输加密实践
    • 手机美图APP实践
      • 代码示例
      • 方案实践——搭建美图APP
      • 方案实践——使用美图APP
      • 概述及场景介绍
    • Python API请求访问BOS
      • PUT请求上传文件到Bucket
      • 基础(必看):鉴权字符串生成
      • GET请求下载Bucket文件到本地
    • Web数据直传至BOS
      • 基础篇:在浏览器中直接上传文件到BOS
      • 原理篇三:STS临时认证
      • 原理篇二:大文件分块上传
      • 原理篇一:在浏览器中直接上传文件到BOS
      • 进阶篇二:通过PostObject接口处理IE低版本
      • 进阶篇一:STS临时认证
    • 数据迁移
      • 场景简介
      • 三方云数据迁移到BOS
      • 本地数据迁移到BOS
  • SDK
    • SDK概览
    • Harmony-SDK
      • 异常处理
      • 日志
      • 版本变更记录
      • 初始化
      • 安装SDK工具包
      • 概述
      • Object管理
        • Object的分块上传
        • 获取Object
        • 上传Object
        • 删除Object
        • Object权限控制
        • 拷贝Object
        • 查看Bucket中的Object
      • Bucket管理
        • 查看Bucket列表
        • 新建Bucket
        • Bucket存储类型设置与查询
        • 判断Bucket是否存在
        • 删除Bucket
        • 查看Bucket所属的区域
        • Bucket权限控制
    • Ruby-SDK
      • 异常处理
      • 版本变更记录
      • sdk日志
      • 初始化
      • 安装SDK工具包
      • 概述
      • 文件管理
        • 查看文件是否存在
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新文件元信息
        • Object权限控制
        • 下载文件
        • 变更文件存储等级
        • 拷贝Object
        • 获取文件下载URL
        • 删除文件
      • Bucket管理
        • 新建Bucket
        • 判断Bucket是否存在
        • 删除Bucket
        • 查看Bucket所属的区域
        • Bucket权限管理
        • 列举Bucket
        • 概述
    • Python-SDK
      • 异常处理
      • 版本变更记录
      • 常见问题
      • 日志控制
      • 初始化
      • 安装SDK工具包
      • 概述
      • 文件管理
        • 查看文件是否存在
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新文件元信息
        • 取回归档存储类型文件
        • Object权限控制
        • 下载文件
        • 选取文件
        • 变更文件存储等级
        • 拷贝Object
        • 获取文件下载URL
        • 软链接
        • 删除文件
      • Bucket管理
        • Bucket跨域资源访问
        • 新建Bucket
        • 用户额度管理
        • 镜像回源
        • 数据同步
        • 判断Bucket是否存在
        • 获取回收站开通信息
        • 删除Bucket
        • 原图保护
        • 查看Bucket所属的区域
        • 设置Bucket存储类型
        • 关闭回收站
        • Bucket回收站
        • 日志管理
        • bucket清单管理
        • Bucket权限管理
        • 列举Bucket
        • Bucket生命周期管理
        • 事件通知
        • 概述
    • JavaScript-SDK
      • 安装SDK
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 额度管理
      • 概述
      • Object管理
        • Object的分块上传
        • 获取Object
        • 上传Object
        • 删除Object
        • 获取文件URL
        • 拷贝Object
        • 查看Bucket中的Object
      • Bucket管理
        • 查看Bucket列表
        • 新建Bucket
        • Bucket日志管理
        • 判断Bucket是否存在
        • 删除Bucket
        • 查看Bucket所属的区域
        • 设置Bucket存储类型
        • 数据同步配置
        • Bucket权限管理
        • Bucket生命周期管理
        • 概述
    • Android-SDK
      • 异常处理
      • 日志
      • Object管理
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 概述
      • 文件管理
        • Object的分块上传
        • 获取Object
        • 上传Object
        • 删除Object
        • Object权限控制
        • 拷贝Object
        • 查看Bucket中的Object
      • Bucket管理
        • 查看Bucket列表
        • 新建Bucket
        • 判断Bucket是否存在
        • 删除Bucket
        • Bucket权限控制
    • Java-SDK
      • 数据处理及使用
      • 异常处理
      • 版本变更记录
      • 常见问题
      • sdk日志
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 文件管理
      • 概述
      • 文件管理
        • 拷贝文件
        • 查看文件是否存在
        • 对象标签
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新文件元信息
        • 取回归档存储类型文件
        • Object权限控制
        • 下载文件
        • 选取文件
        • 变更文件存储等级
        • 获取文件下载URL
        • 获取目录容量概览
        • 删除文件
      • Bucket管理
        • 新建Bucket
        • Bucket静态网站托管
        • 镜像回源
        • 标签管理
        • 判断Bucket是否存在
        • 删除Bucket
        • 原图保护
        • 查看Bucket所属的区域
        • 设置Bucket存储类型
        • Bucket数据同步
        • 设置Bucket服务端加密
        • Bucket权限管理
        • 回收站
        • 列举Bucket
        • 概述
    • IOS-SDK
      • 异常处理
      • 日志
      • Object管理
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 概述
      • 文件管理
        • Object的分块上传
        • 获取Object
        • 上传Object
        • 删除Object
        • 拷贝Object
        • 查看Bucket中的Object
      • Bucket管理
        • 查看Bucket列表
        • 新建Bukcet
        • 删除Bucket
        • Bucket权限控制
        • 判断Bucket是否存在,以及是否有权限访问
    • GO-SDK
      • 数据处理及使用
      • 版本变更记录
      • 请求管理
      • sdk日志
      • 初始化
      • Bucket管理
      • 错误处理
      • 安装SDK工具包
      • 文件管理
      • 概述
    • C-Dotnet-SDK
      • 异常处理
      • Object管理
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 概述
    • PHP-SDK
      • 异常处理
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 文件管理
      • 概述
    • C-SDK
      • 异常处理
      • 版本变更记录
      • 初始化
      • 安装sdk工具包
      • 概述
      • 文件管理
        • 拷贝文件
        • 查看文件是否存在
        • 获取文件下载链接
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新元数据信息
        • Object权限控制
        • 下载文件
        • 变更文件存储等级
        • 归档存储
        • 删除文件
      • Bucket管理
        • 新建bucket
        • 删除bucket
        • 判断bucket 是否存在
        • 列举bucket
        • 概述
    • C++-SDK
      • 异常处理
      • 版本变更记录
      • sdk日志
      • 初始化
      • 安装SDK工具包
      • 概述
      • 文件管理
        • 拷贝文件
        • 查看文件是否存在
        • Object标签管理
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新文件元信息
        • Object权限控制
        • 下载文件
        • 变更文件存储等级
        • 获取文件下载URL
        • 归档存储
        • 删除文件
      • 请求管理
        • 中断取消请求
      • Bucket管理
        • 新建Bucket
        • 判断Bucket是否存在
        • 删除Bucket
        • 查看Bucket所属的区域
        • Bucket权限管理
        • 列举Bucket
        • 概述
  • 服务等级协议SLA
    • BOS服务等级协议SLA(V3.0)
    • 百度智能云对象存储可信云认证
  • API参考
    • 音视频处理接口
    • 访问控制
    • 简介
    • 接口规范
    • 上传回调
    • 错误码
    • 图像审核服务接口
      • 水印二维码识别(watermark)
      • 公众人物识别(public)
      • 暴恐识别(terror)
      • 恶心图识别(disgust)
      • 色情识别(antiporn)
      • 政治人物识别(politician)
      • 图像质量识别(quality)
      • 人脸探测(face)
      • 接口描述
      • 通用文字识别(ocr)
    • 分片上传相关接口
      • AbortMultipartUpload
      • ListMultipartUploads
      • ListParts
      • 使用指南
      • UploadPart
      • InitiateMultipartUpload
      • UploadPartCopy
      • CompleteMultipartUpload
    • Service相关接口
      • ListBuckets
      • 额度管理
        • DeleteUserQuota
        • PutUserQuota
        • GetUserQuota
    • Object相关接口
      • 软链接
        • GetSymlink
        • PutSymlink
      • 基础操作
        • CopyObject
        • ListObjects
        • FetchObject
        • GetObjectMeta
        • PostObject
        • listObjectVersions
        • DeleteObject
        • PutObject
        • AppendObject
        • DeleteMultipleObjects
        • RestoreObject
        • GetObject
        • OPTIONSObject
      • 权限控制
        • GetObjectAcl
        • PutObjectAcl
        • DeleteObjectAcl
      • Select扫描
        • SelectObject
      • 对象标签
        • PutObjectTagging
        • GetObjectTagging
        • DeleteObjectTagging
    • Bucket相关接口
      • 镜像回源
        • PutBucketMirroring
        • DeleteBuketMirroring
        • GetBucketMirroring
      • 静态网站
        • PutBucketStaticWebsite
        • DeleteBucketStaticWebsite
        • GetBucketStaticWebsite
      • 数据加密
        • GetBucketEncryption
        • DeleteBucketEncryption
        • PutBucketEncryption
      • 数据同步
        • GetBucketReplicationProgress
        • ListBucketReplication
        • GetBucketReplication
        • PutBucketReplication
        • DeleteBucketReplication
      • 日志管理
        • DeleteBucketLogging
        • GetBucketLogging
        • PutBucketLogging
      • 请求者付费
        • GetBucketRequestPayment
        • PutBucketRequestPayment
      • 跨域访问
        • GetBucketCors
        • PutBucketCors
        • DeleteBucketCors
      • 版本控制
        • PutBucketVersioning
        • GetBucketVersioning
      • 基础操作
        • GetBucketLocation
        • HeadBucket
        • PutBucketStorageclass
        • PutBucket
        • GetBucketStorageClass
        • DeleteBucket
      • 事件通知
        • PostResult
        • DeleteNotification
        • PostEvent
        • GetNotification
        • PutNotification
      • 权限控制
        • PutBucketAcl
        • GetBucketAcl
      • 额度管理
        • PutBucketQuota
        • GetBucketQuota
        • DeleteBucketQuota
      • 原图保护
        • PutBucketCopyrightProtection
        • GetCopyrightProtection
        • DeleteCopyrightProtection
      • 标签管理
        • PutBucketTagging
        • DeleteBucketTagging
        • GetBucketTagging
      • 回收站
        • DeleteBucketTrash
        • GetBucketTrash
        • PutBucketTrash
      • 存储桶清单
        • GetBucketInventory
        • ListBucketInventory
        • DeleteBucketInventory
        • PutBucketInventory
      • 生命周期
        • DeleteBucketLifecycle
        • GetBucketLifecycle
        • PutBucketLifecycle
      • 合规保留
        • ExtendBucketObjectLock
        • DeleteBucketObjectLock
        • CompleteBucketObjectLock
        • InitBucketObjectLock
        • GetBucketObjectLock
  • 常见问题
    • 数据迁移与备份
    • 认证及权限管理
    • 计费类问题
    • API&SDK&工具
    • Bucket访问及管理
    • 图片服务
    • 分析与统计
    • 一般类问题
    • 常见问题总览
    • 性能类问题
    • 安全类问题
    • 存储桶域名请求风格
    • Object上传下载及管理
  • 数据魔方
    • 批量处理
    • zip打包压缩
    • 智能数据处理
      • 图像处理
        • 图像处理介绍
        • 图像处理名词解释
        • 图像处理常见问题
        • 图像通用设置
          • 原图保护
        • 图像处理指南V1.0
          • 质量变换
          • 格式转换
          • 获取图片信息
          • 使用规则
          • 水印
          • 图像缩略
          • 图像旋转
          • 渐近显示
          • 图像裁剪
        • 图像处理指南V2.0
          • 图像缩放
          • 质量变换
          • 格式转换
          • 图片模糊
          • 获取图片信息
          • 去除元信息
          • 使用规则
          • 图片对比度
          • 图片亮度
          • 图片异常检测
          • 图片处理持久化
          • 渐近显示
          • 图像盲水印
          • 图片压缩
          • 失败返回原图
          • 图片锐化
          • 灰度变换
          • 智能处理
            • 智能处理使用规则
            • 智能效果
              • 智能去雾
              • 智能清晰度
              • 智能对比度
              • 智能调色
            • 智能场景
              • 拉伸恢复
              • 黑白上色
              • 物体擦除
              • 人像动漫化
              • 天空分隔
              • 风格转换
              • 无损放大
          • 图像水印
            • 添加图文混合水印
            • 添加图片水印
            • 添加文字水印
          • 图像旋转
            • 自适应旋转
            • 普通旋转
          • 图像裁剪
            • 索引裁剪
            • 内切圆裁剪
            • 圆角矩形裁剪
            • 普通裁剪
      • 文档处理
        • 文档预览
      • 视频处理
        • 视频即时转码
        • 获取视频元信息
        • 视频截帧
        • 音视频处理
        • M3U8签名
  • 视频专区
    • BOS分级存储
    • 通过域名访问BOS资源
    • 了解BOS
    • Object上传
  • 产品定价
    • 余额不足和欠费提醒
    • 查看消费明细
    • 计费案例
    • 计费常见问题
    • 计费项介绍
      • 流量费用
      • 计费项概览
      • 存储费用
      • 数据处理费用
      • 请求费用
    • 产品价格
      • 资源包价格清单
      • 按需计费方式
      • 资源包价格清单-废弃
        • 低频存储包
        • 回源流量包
        • 标准存储包
        • 外网下行流量包
        • 冷存储包
        • 归档存储包
      • 资源包计费方式
        • 资源包概览
        • 资源包抵扣规则
      • 按需价格清单
        • 数据处理价格
        • 存储价格
        • 流量价格
        • 请求价格
  • 数据湖存储
    • BOS HDFS 工具
      • 配置和使用
      • 常见问题
      • 概述
    • 数据迁移和流转
      • 使用 DistCp 迁移数据至分层命名空间 Bucket
      • DataX 读写 BOS
    • 分层命名空间
      • 服务介绍
      • 功能支持说明
      • 使用方式
      • 普通存储桶转换为分层命名空间存储桶
    • 大数据组件使用指南
      • Kafka数据存储到BOS
      • Spark 使用指南
      • Elasticsearch快照数据存储到BOS
      • Logstash数据存储到BOS
      • Hbase使用BOS作为底层存储
      • Flink 使用指南
      • Impala 使用指南
      • Hive 使用指南
      • Flume 数据存储到 BOS
      • Druid使用BOS作为Deep storage
      • Presto 使用指南
      • Fluentd收集数据存储到BOS
所有文档
menu
没有找到结果,请重新输入

对象存储 BOS

  • 产品公告
  • 功能发布记录
  • 产品描述
    • 使用限制
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
    • 核心概念
    • 分级存储介绍
      • 为什么会有分级存储
      • 存储类型介绍
  • S3
    • 兼容签名认证
    • 兼容接口
    • 兼容公共头
    • 兼容工具
    • 服务域名
    • 概述
  • 控制台操作指南
    • 查看并导出用量数据
    • 图片审核服务
    • 在线数据导入
    • 事件通知及数据处理
    • 操作准备
    • 配置BOS多用户访问控制
    • 联动百度网盘分享
    • 文件自动解压
    • 图片服务
    • 智能业务分析
    • 收藏路径
    • 分层命名空间存储桶操作说明
    • 额度管理
    • 统计与监控
    • 管理Bucket
      • 数据访问趋势分析
      • 设置跨域访问
      • Bucket概览
      • 请求者付费
      • 设置日志查询
      • 创建Bucket
      • Bucket额度管理
      • 删除Bucket
      • 管理Bucket标签
      • 设置回收站
      • 设置静态网站托管
      • 设置访问日志
      • 设置存储空间清单
      • 设置数据同步
      • 设置Referer白名单
      • 设置合规保留
      • 设置版本控制
      • 设置镜像回源
      • 设置服务端加密
      • 查询Bucket
      • 管理生命周期
        • 配置智能分层
        • 配置基础生命周期管理
        • 概述
        • 基础生命周期管理使用说明
          • 基于最后一次修改时间的生命周期规则
          • 基于最后一次访问时间的生命周期规则
      • 设置Bucket读写权限
        • 权限介绍
        • 设置Bucket读写权限
    • 管理Object
      • 设置文件权限
      • 文件夹分享
      • Select扫描
      • 分享文件-获取文件url
      • 对象标签
      • 设置Meta信息
      • 管理文件夹
      • 批量删除文件夹
      • 上传文件
      • 碎片管理
      • 下载文件
      • 转换文件存储类型
      • 重命名文件
      • 复制和移动文件
      • 删除文件
      • 文件夹统计
      • 取回归档文件
      • 查询Object
      • 批量管理Object
      • 设置软链接
    • 全局设置
      • VPC访问控制
    • 数据发布
      • 配置CDN上行加速
      • 创建Bucket自定义域名
      • 数据发布简介
      • 查看Bucket官方域名
      • 开通CDN官方加速域名
      • 配置缓存管理
      • 全球加速
  • 相关协议
    • 百度智能云对象存储联动百度网盘使用协议
  • 开发者指南
    • 基本概念
    • Region与Endpoint
    • 图像审核
    • 静态网站托管
    • 开发准备
    • 单链接限速
    • 监控服务操作
    • 事件通知
    • 数据容灾
      • 数据同步
      • 多AZ存储
    • 数据安全
      • 最小权限原则
      • 设置回收站
      • 设置防盗链
      • 设置服务端加密
      • 版本控制
        • 版本控制概述
        • 删除标记
      • 权限控制
        • IAM主子用户访问控制
        • Object权限控制
        • Bucket权限控制
    • 数据湖接入
      • 分层命名空间
      • 元数据转换服务
    • Bucket基本操作
      • 查看Bucket列表
      • 获取Bucket地域信息
      • 创建Bucket
      • 删除Bucket
      • 设置跨域资源共享
      • 设置访问日志
      • 数据发布
      • 管理生命周期
      • 设置Bucket标签
    • 数据生命周期管理
      • 智能业务分析
    • 数据发布
      • CDN加速发布
      • 绑定自定义域名
    • 数据迁移上云
      • 本地数据上云
      • 从其他云迁移
      • 场景概述
    • Object基本操作
      • 下载数据
        • 简单下载
        • 断点续传下载
      • 管理文件
        • 查看文件列表
        • Select扫描
        • 对象标签
        • 拷贝数据
        • 获取数据元信息
        • 删除数据
      • 上传数据
        • 上传回调
        • 追加上传
        • 表单上传
        • 分块及断点续传
        • 简单上传
  • 管理Bucket
    • Bucket概览
    • 请求者付费
    • 创建Bucket
    • Bucket额度管理
    • 删除Bucket
    • 管理Bucket标签
    • 设置回收站
    • 设置静态网站托管
    • 设置访问日志
    • 设置存储空间清单
    • 设置数据同步
    • 设置Referer白名单
    • 设置合规保留
    • 设置镜像回源
    • 设置服务端加密
    • .Archive
      • 设置跨域访问
      • Bucket概览
      • 请求者付费
      • 创建Bucket
      • Bucket额度管理
      • 删除Bucket
      • 管理Bucket标签
      • 设置回收站
      • 设置静态网站托管
      • 设置访问日志
      • 设置存储空间清单
      • 设置数据同步
      • 设置Referer白名单
      • 设置合规保留
      • 设置镜像回源
      • 设置服务端加密
      • 查询Bucket
    • 设置Bucket读写权限
      • 权限介绍
      • 设置Bucket读写权限
      • .Archive
        • 权限介绍
        • 设置Bucket读写权限
  • 数据处理
    • 图像处理名词解释
    • 视频即时转码
    • 获取视频元信息
    • 数据处理介绍
    • 视频截帧
    • 图像审核
    • 数据处理常见问题
    • 文档预览
    • 音视频处理
    • 智能识别
      • 概述
    • 图像通用设置
      • 原图保护
    • 图像处理指南V1.0
      • 质量变换
      • 格式转换
      • 获取图片信息
      • 使用规则
      • 水印
      • 图像缩略
      • 图像旋转
      • 渐近显示
      • 图像裁剪
    • 图像处理指南V2.0
      • 图像缩放
      • 质量变换
      • 格式转换
      • 图片模糊
      • 获取图片信息
      • 去除元信息
      • 图象缩放
      • 使用规则
      • 图片对比度
      • 图片亮度
      • 渐近显示
      • 图片锐化
      • 灰度变换
      • 智能处理
        • 智能处理使用规则
        • 智能效果
          • 智能去雾
          • 智能清晰度
          • 智能对比度
          • 智能调色
        • 智能场景
          • 拉伸恢复
          • 黑白上色
          • 物体擦除
          • 人像动漫化
          • 天空分隔
          • 风格转换
          • 无损放大
      • 图像水印
        • 添加图文混合水印
        • 添加图片水印
        • 添加文字水印
      • 图像旋转
        • 自适应旋转
        • 普通旋转
      • 图像裁剪
        • 索引裁剪
        • 内切圆裁剪
        • 圆角矩形裁剪
        • 普通裁剪
  • 内容审核
    • 图像审核
    • 视频审核
  • 周边工具
    • BOS-FTP工具
    • fsspec-bosfs
    • 周边工具概述
    • BOS-AlluxioExtension工具
    • 下载专区
    • BOS-PC客户端
      • 安装及登录
      • 使用指南
      • 常见问题
    • Docker
      • 概述
    • BOS-CLI命令行工具(旧版本)
      • 通过CLI使用BOS服务
      • 安装BOSCLI
      • 配置BOSCLI
      • 版本变更记录
      • 概述
    • BOS-HDFS工具
      • 配置和使用
      • 概述
      • 大数据组件使用指南
        • Presto使用指南
        • Hive使用指南
        • Flink使用指南
        • Impala使用指南
        • Spark使用指南
        • Flume数据存储到BOS
        • DataX读写BOS
    • BOS-CMD命令行工具
      • BOSCMD版本变更记录
      • 常见问题
      • 通过CMD使用BOS服务
      • 配置BOSCMD
      • 配置BCECMD命令行补全功能
      • BOS CMD常见问题
      • 安装BOSCMD
      • 概述
    • 第三方工具
      • rclone
      • S3 Browser
      • MinIO
      • 其他工具
      • Goofys
    • BOS-API生成工具
      • 概述
      • 图像审核服务接口
        • 图像审核接口
      • Bucket数据同步相关接口
        • 列举Bucket的所有replication同步规则
        • 设置Bucket数据同步
        • 获取Bucket数据同步信息
        • 获取Bucket指定id数据同步的进程状态
        • 删除Bucket的指定id的同步复制配置
      • 如何调用API
        • 鉴权认证
        • 构造请求
        • 返回响应
      • Service相关接口
        • 列举存储桶
        • 额度管理
          • 删除用户的额度设置
          • 设置用户的额度
          • 获取用户的额度信息
      • Object相关接口
        • 软链接
          • 创建软链接
          • 获取软链接
        • 基础操作
          • 获取对象的meta信息
          • 抓取Object并存储到Bucket中
          • 删除多个Object
          • 删除Object
          • 获取对象
          • 取回归档文件
        • 权限控制
          • 设置Object的访问权限
          • 获取Object的访问权限
          • 删除Object的访问权限
        • Select扫描
          • 向Object执行Sql语句
      • Bucket相关接口
        • 静态网站
          • 删除bucket的静态网站托管信息
          • 设置静态网站托管
          • 获取bucket的静态网站托管信息
        • 数据加密
          • 关闭bucket的服务端加密功能
          • 开启bucket的加密开关
          • 判断bucket的加密是否打开
        • 日志管理
          • 获取Bucket的访问日志配置
          • 开启Bucket的访问日志
          • 关闭Bucket的访问日志配置
        • 跨域访问
          • 获取指定Bucket上设定一个跨域资源共享规则
          • 在指定Bucket上设定一个跨域资源共享规则
          • 关闭指定Bucket上设定一个跨域资源共享规则
        • 基础操作
          • 获取bucket所在的区域
          • 创建存储桶
          • 删除存储桶
          • 查看Bucket是否存在和请求者是否有权限访问这个Bucket
          • 列举存储桶下的Object
          • 获取Bucket的默认存储类型
          • 列举存储桶
          • 跨域查询
          • 设置Bucket的默认存储类型
        • 事件通知
          • 推送ImageOcr和ImageClassify消息
          • 删除Bucket的通知规则
          • 获取Bucket的通知规则
          • 推送事件消息
          • 设置Bucket通知规则
        • 权限控制
          • 获取Bucket的访问权限
          • 设置Bucket的访问权限
        • 原图保护
          • 获取Bucket的原图保护配置情况
          • 开启Bucket的原图保护功能
          • 关闭Bucket的原图保护配置情况
        • 回收站
          • 开通Bucket回收站功能
          • 获取Bucket回收站的开通状态
          • 关闭Bucket回收站功能
        • 生命周期
          • 设置Bucket的生命周期
          • 获取Bucket的生命周期管理规则
          • 删除Bucket的生命周期管理规则
        • 合规保留
          • 锁定Bucket合规保留策略
          • 初始化合规保留策略
          • 删除合规保留策略
          • 获取Bucket合规保留策略
          • 延迟Bucket的合规保留策略保护周期
    • BOS-Probe错误检测工具
      • 通过BOSProbe检查上传下载
      • 安装BOSProbe
      • 建议及报告查看
      • 概述
    • BOS-FS挂载工具
      • 配置
      • 版本变更记录
      • 常见问题
      • 操作与实践
      • 安装
      • 概述
    • BOS Connector for PyTorch
      • 构建 Dataset
      • 读写 Checkpoint
      • 配置 BOS Connector for Pytorch
      • 功能及使用说明
      • 安装 BOS Connector for Pytorch
      • 性能测试
      • 概述
    • BOS-Util批量操作工具
      • 通过BOS-Util使用BOS服务
      • 版本变更记录
      • 安装BOS-Util
      • 概述
    • BOS-Import数据上云工具
      • 版本记录
      • 配置文件
      • 异常处理
      • 部署方式
      • 日志
      • 任务进度恢复
      • 概述
    • 月光宝盒物理迁移设备
      • 月光宝盒介绍
      • 月光宝盒操作流程
  • 安全与合规
    • 监控审计
    • 数据保护
    • 数据容灾
    • 访问控制
    • 数据保留合规
    • 数据加密
    • 概述
  • 快速入门
    • 开始使用BOS
    • 获取Object
    • 上传Object
    • 创建Bucket
    • 快速入门流程
    • 删除Object
    • 删除Bucket
  • 典型实践
    • 如何解决浏览器跨域CORS问题
    • CDN动态加速上传数据到BOS
    • 混合云中使用专线-VPN访问BOS
    • 通过安卓SDK使用HTTPDNS服务
    • 基于BOS的Presto实践
    • 将 BOS 作为 Jfrog Artifactory 的后端存储服务
    • 防盗链
    • BOS专线回源IDC最佳实践
    • AWS-lambda同步S3数据到BOS
    • 客户端加密实践
    • 基于BOS的Impala实践
    • 使用CDN加速BOS
    • HTTPS传输加密实践
    • 手机美图APP实践
      • 代码示例
      • 方案实践——搭建美图APP
      • 方案实践——使用美图APP
      • 概述及场景介绍
    • Python API请求访问BOS
      • PUT请求上传文件到Bucket
      • 基础(必看):鉴权字符串生成
      • GET请求下载Bucket文件到本地
    • Web数据直传至BOS
      • 基础篇:在浏览器中直接上传文件到BOS
      • 原理篇三:STS临时认证
      • 原理篇二:大文件分块上传
      • 原理篇一:在浏览器中直接上传文件到BOS
      • 进阶篇二:通过PostObject接口处理IE低版本
      • 进阶篇一:STS临时认证
    • 数据迁移
      • 场景简介
      • 三方云数据迁移到BOS
      • 本地数据迁移到BOS
  • SDK
    • SDK概览
    • Harmony-SDK
      • 异常处理
      • 日志
      • 版本变更记录
      • 初始化
      • 安装SDK工具包
      • 概述
      • Object管理
        • Object的分块上传
        • 获取Object
        • 上传Object
        • 删除Object
        • Object权限控制
        • 拷贝Object
        • 查看Bucket中的Object
      • Bucket管理
        • 查看Bucket列表
        • 新建Bucket
        • Bucket存储类型设置与查询
        • 判断Bucket是否存在
        • 删除Bucket
        • 查看Bucket所属的区域
        • Bucket权限控制
    • Ruby-SDK
      • 异常处理
      • 版本变更记录
      • sdk日志
      • 初始化
      • 安装SDK工具包
      • 概述
      • 文件管理
        • 查看文件是否存在
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新文件元信息
        • Object权限控制
        • 下载文件
        • 变更文件存储等级
        • 拷贝Object
        • 获取文件下载URL
        • 删除文件
      • Bucket管理
        • 新建Bucket
        • 判断Bucket是否存在
        • 删除Bucket
        • 查看Bucket所属的区域
        • Bucket权限管理
        • 列举Bucket
        • 概述
    • Python-SDK
      • 异常处理
      • 版本变更记录
      • 常见问题
      • 日志控制
      • 初始化
      • 安装SDK工具包
      • 概述
      • 文件管理
        • 查看文件是否存在
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新文件元信息
        • 取回归档存储类型文件
        • Object权限控制
        • 下载文件
        • 选取文件
        • 变更文件存储等级
        • 拷贝Object
        • 获取文件下载URL
        • 软链接
        • 删除文件
      • Bucket管理
        • Bucket跨域资源访问
        • 新建Bucket
        • 用户额度管理
        • 镜像回源
        • 数据同步
        • 判断Bucket是否存在
        • 获取回收站开通信息
        • 删除Bucket
        • 原图保护
        • 查看Bucket所属的区域
        • 设置Bucket存储类型
        • 关闭回收站
        • Bucket回收站
        • 日志管理
        • bucket清单管理
        • Bucket权限管理
        • 列举Bucket
        • Bucket生命周期管理
        • 事件通知
        • 概述
    • JavaScript-SDK
      • 安装SDK
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 额度管理
      • 概述
      • Object管理
        • Object的分块上传
        • 获取Object
        • 上传Object
        • 删除Object
        • 获取文件URL
        • 拷贝Object
        • 查看Bucket中的Object
      • Bucket管理
        • 查看Bucket列表
        • 新建Bucket
        • Bucket日志管理
        • 判断Bucket是否存在
        • 删除Bucket
        • 查看Bucket所属的区域
        • 设置Bucket存储类型
        • 数据同步配置
        • Bucket权限管理
        • Bucket生命周期管理
        • 概述
    • Android-SDK
      • 异常处理
      • 日志
      • Object管理
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 概述
      • 文件管理
        • Object的分块上传
        • 获取Object
        • 上传Object
        • 删除Object
        • Object权限控制
        • 拷贝Object
        • 查看Bucket中的Object
      • Bucket管理
        • 查看Bucket列表
        • 新建Bucket
        • 判断Bucket是否存在
        • 删除Bucket
        • Bucket权限控制
    • Java-SDK
      • 数据处理及使用
      • 异常处理
      • 版本变更记录
      • 常见问题
      • sdk日志
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 文件管理
      • 概述
      • 文件管理
        • 拷贝文件
        • 查看文件是否存在
        • 对象标签
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新文件元信息
        • 取回归档存储类型文件
        • Object权限控制
        • 下载文件
        • 选取文件
        • 变更文件存储等级
        • 获取文件下载URL
        • 获取目录容量概览
        • 删除文件
      • Bucket管理
        • 新建Bucket
        • Bucket静态网站托管
        • 镜像回源
        • 标签管理
        • 判断Bucket是否存在
        • 删除Bucket
        • 原图保护
        • 查看Bucket所属的区域
        • 设置Bucket存储类型
        • Bucket数据同步
        • 设置Bucket服务端加密
        • Bucket权限管理
        • 回收站
        • 列举Bucket
        • 概述
    • IOS-SDK
      • 异常处理
      • 日志
      • Object管理
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 概述
      • 文件管理
        • Object的分块上传
        • 获取Object
        • 上传Object
        • 删除Object
        • 拷贝Object
        • 查看Bucket中的Object
      • Bucket管理
        • 查看Bucket列表
        • 新建Bukcet
        • 删除Bucket
        • Bucket权限控制
        • 判断Bucket是否存在,以及是否有权限访问
    • GO-SDK
      • 数据处理及使用
      • 版本变更记录
      • 请求管理
      • sdk日志
      • 初始化
      • Bucket管理
      • 错误处理
      • 安装SDK工具包
      • 文件管理
      • 概述
    • C-Dotnet-SDK
      • 异常处理
      • Object管理
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 概述
    • PHP-SDK
      • 异常处理
      • 版本变更记录
      • 初始化
      • Bucket管理
      • 安装SDK工具包
      • 文件管理
      • 概述
    • C-SDK
      • 异常处理
      • 版本变更记录
      • 初始化
      • 安装sdk工具包
      • 概述
      • 文件管理
        • 拷贝文件
        • 查看文件是否存在
        • 获取文件下载链接
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新元数据信息
        • Object权限控制
        • 下载文件
        • 变更文件存储等级
        • 归档存储
        • 删除文件
      • Bucket管理
        • 新建bucket
        • 删除bucket
        • 判断bucket 是否存在
        • 列举bucket
        • 概述
    • C++-SDK
      • 异常处理
      • 版本变更记录
      • sdk日志
      • 初始化
      • 安装SDK工具包
      • 概述
      • 文件管理
        • 拷贝文件
        • 查看文件是否存在
        • Object标签管理
        • 列举存储空间中的文件
        • 上传文件
        • 获取及更新文件元信息
        • Object权限控制
        • 下载文件
        • 变更文件存储等级
        • 获取文件下载URL
        • 归档存储
        • 删除文件
      • 请求管理
        • 中断取消请求
      • Bucket管理
        • 新建Bucket
        • 判断Bucket是否存在
        • 删除Bucket
        • 查看Bucket所属的区域
        • Bucket权限管理
        • 列举Bucket
        • 概述
  • 服务等级协议SLA
    • BOS服务等级协议SLA(V3.0)
    • 百度智能云对象存储可信云认证
  • API参考
    • 音视频处理接口
    • 访问控制
    • 简介
    • 接口规范
    • 上传回调
    • 错误码
    • 图像审核服务接口
      • 水印二维码识别(watermark)
      • 公众人物识别(public)
      • 暴恐识别(terror)
      • 恶心图识别(disgust)
      • 色情识别(antiporn)
      • 政治人物识别(politician)
      • 图像质量识别(quality)
      • 人脸探测(face)
      • 接口描述
      • 通用文字识别(ocr)
    • 分片上传相关接口
      • AbortMultipartUpload
      • ListMultipartUploads
      • ListParts
      • 使用指南
      • UploadPart
      • InitiateMultipartUpload
      • UploadPartCopy
      • CompleteMultipartUpload
    • Service相关接口
      • ListBuckets
      • 额度管理
        • DeleteUserQuota
        • PutUserQuota
        • GetUserQuota
    • Object相关接口
      • 软链接
        • GetSymlink
        • PutSymlink
      • 基础操作
        • CopyObject
        • ListObjects
        • FetchObject
        • GetObjectMeta
        • PostObject
        • listObjectVersions
        • DeleteObject
        • PutObject
        • AppendObject
        • DeleteMultipleObjects
        • RestoreObject
        • GetObject
        • OPTIONSObject
      • 权限控制
        • GetObjectAcl
        • PutObjectAcl
        • DeleteObjectAcl
      • Select扫描
        • SelectObject
      • 对象标签
        • PutObjectTagging
        • GetObjectTagging
        • DeleteObjectTagging
    • Bucket相关接口
      • 镜像回源
        • PutBucketMirroring
        • DeleteBuketMirroring
        • GetBucketMirroring
      • 静态网站
        • PutBucketStaticWebsite
        • DeleteBucketStaticWebsite
        • GetBucketStaticWebsite
      • 数据加密
        • GetBucketEncryption
        • DeleteBucketEncryption
        • PutBucketEncryption
      • 数据同步
        • GetBucketReplicationProgress
        • ListBucketReplication
        • GetBucketReplication
        • PutBucketReplication
        • DeleteBucketReplication
      • 日志管理
        • DeleteBucketLogging
        • GetBucketLogging
        • PutBucketLogging
      • 请求者付费
        • GetBucketRequestPayment
        • PutBucketRequestPayment
      • 跨域访问
        • GetBucketCors
        • PutBucketCors
        • DeleteBucketCors
      • 版本控制
        • PutBucketVersioning
        • GetBucketVersioning
      • 基础操作
        • GetBucketLocation
        • HeadBucket
        • PutBucketStorageclass
        • PutBucket
        • GetBucketStorageClass
        • DeleteBucket
      • 事件通知
        • PostResult
        • DeleteNotification
        • PostEvent
        • GetNotification
        • PutNotification
      • 权限控制
        • PutBucketAcl
        • GetBucketAcl
      • 额度管理
        • PutBucketQuota
        • GetBucketQuota
        • DeleteBucketQuota
      • 原图保护
        • PutBucketCopyrightProtection
        • GetCopyrightProtection
        • DeleteCopyrightProtection
      • 标签管理
        • PutBucketTagging
        • DeleteBucketTagging
        • GetBucketTagging
      • 回收站
        • DeleteBucketTrash
        • GetBucketTrash
        • PutBucketTrash
      • 存储桶清单
        • GetBucketInventory
        • ListBucketInventory
        • DeleteBucketInventory
        • PutBucketInventory
      • 生命周期
        • DeleteBucketLifecycle
        • GetBucketLifecycle
        • PutBucketLifecycle
      • 合规保留
        • ExtendBucketObjectLock
        • DeleteBucketObjectLock
        • CompleteBucketObjectLock
        • InitBucketObjectLock
        • GetBucketObjectLock
  • 常见问题
    • 数据迁移与备份
    • 认证及权限管理
    • 计费类问题
    • API&SDK&工具
    • Bucket访问及管理
    • 图片服务
    • 分析与统计
    • 一般类问题
    • 常见问题总览
    • 性能类问题
    • 安全类问题
    • 存储桶域名请求风格
    • Object上传下载及管理
  • 数据魔方
    • 批量处理
    • zip打包压缩
    • 智能数据处理
      • 图像处理
        • 图像处理介绍
        • 图像处理名词解释
        • 图像处理常见问题
        • 图像通用设置
          • 原图保护
        • 图像处理指南V1.0
          • 质量变换
          • 格式转换
          • 获取图片信息
          • 使用规则
          • 水印
          • 图像缩略
          • 图像旋转
          • 渐近显示
          • 图像裁剪
        • 图像处理指南V2.0
          • 图像缩放
          • 质量变换
          • 格式转换
          • 图片模糊
          • 获取图片信息
          • 去除元信息
          • 使用规则
          • 图片对比度
          • 图片亮度
          • 图片异常检测
          • 图片处理持久化
          • 渐近显示
          • 图像盲水印
          • 图片压缩
          • 失败返回原图
          • 图片锐化
          • 灰度变换
          • 智能处理
            • 智能处理使用规则
            • 智能效果
              • 智能去雾
              • 智能清晰度
              • 智能对比度
              • 智能调色
            • 智能场景
              • 拉伸恢复
              • 黑白上色
              • 物体擦除
              • 人像动漫化
              • 天空分隔
              • 风格转换
              • 无损放大
          • 图像水印
            • 添加图文混合水印
            • 添加图片水印
            • 添加文字水印
          • 图像旋转
            • 自适应旋转
            • 普通旋转
          • 图像裁剪
            • 索引裁剪
            • 内切圆裁剪
            • 圆角矩形裁剪
            • 普通裁剪
      • 文档处理
        • 文档预览
      • 视频处理
        • 视频即时转码
        • 获取视频元信息
        • 视频截帧
        • 音视频处理
        • M3U8签名
  • 视频专区
    • BOS分级存储
    • 通过域名访问BOS资源
    • 了解BOS
    • Object上传
  • 产品定价
    • 余额不足和欠费提醒
    • 查看消费明细
    • 计费案例
    • 计费常见问题
    • 计费项介绍
      • 流量费用
      • 计费项概览
      • 存储费用
      • 数据处理费用
      • 请求费用
    • 产品价格
      • 资源包价格清单
      • 按需计费方式
      • 资源包价格清单-废弃
        • 低频存储包
        • 回源流量包
        • 标准存储包
        • 外网下行流量包
        • 冷存储包
        • 归档存储包
      • 资源包计费方式
        • 资源包概览
        • 资源包抵扣规则
      • 按需价格清单
        • 数据处理价格
        • 存储价格
        • 流量价格
        • 请求价格
  • 数据湖存储
    • BOS HDFS 工具
      • 配置和使用
      • 常见问题
      • 概述
    • 数据迁移和流转
      • 使用 DistCp 迁移数据至分层命名空间 Bucket
      • DataX 读写 BOS
    • 分层命名空间
      • 服务介绍
      • 功能支持说明
      • 使用方式
      • 普通存储桶转换为分层命名空间存储桶
    • 大数据组件使用指南
      • Kafka数据存储到BOS
      • Spark 使用指南
      • Elasticsearch快照数据存储到BOS
      • Logstash数据存储到BOS
      • Hbase使用BOS作为底层存储
      • Flink 使用指南
      • Impala 使用指南
      • Hive 使用指南
      • Flume 数据存储到 BOS
      • Druid使用BOS作为Deep storage
      • Presto 使用指南
      • Fluentd收集数据存储到BOS
  • 文档中心
  • arrow
  • 对象存储BOS
  • arrow
  • SDK
  • arrow
  • IOS-SDK
  • arrow
  • Object管理
本页目录
  • 上传Object
  • 最简单的上传
  • 设定Object的Http Header
  • 用户自定义元数据
  • 查看Bucket中的Object
  • 简单查询
  • 扩展查询
  • 查询模拟文件夹
  • 获取Object
  • 简单的获取Object
  • 下载Object的一部分内容
  • 下载Object到指定路径
  • 获取Object的storageClass
  • 只获取ObjectMetadata
  • 获取Object的URL
  • 删除Object
  • 拷贝Object
  • Object的分块上传
  • 分块完成Multipart Upload
  • 取消分块上传
  • 获取未完成的分块上传
  • 获取所有已上传的分块信息

Object管理

更新时间:2025-08-21

上传Object

最简单的上传

  • 基本流程

    1. 创建BOSClient类的实例。
    2. 调用BOSClient putObject方法,可以通过如下二种方式上传Object:文件、二进制数据的形式。
    3. 对返回的BOSPutObjectResponse类型实例,可以执行获取eTag操作。
  • 示例代码

    Swift
    1BOSObjectContent* content = [[BOSObjectContent alloc] init];
    2// 以文件方式
    3content.objectData.file = @"<file path>";
    4
    5// 或者以二进制数据方式
    6NSData* data = [[NSData alloc] init];
    7content.objectData.data = data;
    8
    9BOSPutObjectRequest* request = [[BOSPutObjectRequest alloc] init];
    10request.bucket = @"<bucketname>";
    11request.key = @"<objectname>";
    12request.objectContent = content;
    13
    14__block BOSPutObjectResponse* response = nil;
    15BCETask* task = [client putObject:request];
    16task.then(^(BCEOutput* output) {
    17  if (output.progress) {
    18      NSLog(@"put object progress is %@", output.progress);
    19  }
    20
    21  if (output.response) {
    22      response = (BOSPutObjectResponse*)output.response;
    23      NSLog(@"put object success!");
    24  }
    25
    26  if (output.error) {
    27      NSLog(@"put object failure");
    28  }
    29});
    30[task waitUtilFinished];

    说明:Object以文件的形式上传到BOS中,putObject函数支持不超过5GB的Object上传。在putObject请求处理成功后,BOS会在Header中返回Object的ETag作为文件标识。

  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSObjectContent* content = [[BOSObjectContent alloc] init];
    15    // 以文件方式
    16    content.objectData.file = @"<file path>";
    17
    18    // 或者以二进制数据方式
    19    NSData* data = [[NSData alloc] init];
    20    content.objectData.data = data;
    21
    22    BOSPutObjectRequest* request = [[BOSPutObjectRequest alloc] init];
    23    request.bucket = @"<bucketname>";
    24    request.key = @"<objectname>";
    25    request.objectContent = content;
    26
    27    __block BOSPutObjectResponse* response = nil;
    28    BCETask* task = [client putObject:request];
    29    task.then(^(BCEOutput* output) {
    30        if (output.progress) {
    31            NSLog(@"put object progress is %@", output.progress);
    32        }
    33
    34        if (output.response) {
    35            response = (BOSPutObjectResponse*)output.response;
    36            NSLog(@"put object success!");
    37        }
    38
    39        if (output.error) {
    40            NSLog(@"put object failure");
    41        }
    42    });
    43    [task waitUtilFinished];
    44}

设定Object的Http Header

BOS支持您在上传object时设定Http Header。

  • 基本流程

    1. 创建BOSObjectMetadata类的实例。
    2. 设定BOSObjectMetadata实例的contentEncoding/contentType/contentDisposition等字段。
    3. 将BOSObjectMetadata实例设置到BOSPutObjectRequest的objectContent.metadata字段上。
  • 示例代码

    Swift
    1BOSObjectMetadata* metadata = [[BOSObjectMetadata alloc] init];
    2metadata.contentEncoding = @"<encoding>";
    3metadata.contentDisposition = @"<content disposition>";
    4content.metadata = metadata;
  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSObjectContent* content = [[BOSObjectContent alloc] init];
    15    // 以文件方式
    16    content.objectData.file = @"<file path>";
    17
    18    // 或者以二进制数据方式
    19    NSData* data = [[NSData alloc] init];
    20    content.objectData.data = data;
    21
    22    BOSObjectMetadata* metadata = [[BOSObjectMetadata alloc] init];
    23    metadata.contentEncoding = @"<encoding>";
    24    metadata.contentDisposition = @"<content disposition>";
    25    content.metadata = metadata;
    26
    27    BOSPutObjectRequest* request = [[BOSPutObjectRequest alloc] init];
    28    request.bucket = @"<bucketname>";
    29    request.key = @"<Objectname>";
    30    request.objectContent = content;
    31
    32    __block BOSPutObjectResponse* response = nil;
    33    BCETask* task = [client putObject:request];
    34    task.then(^(BCEOutput* output) {
    35        if (output.progress) {
    36            NSLog(@"put object progress is %@", output.progress);
    37        }
    38
    39        if (output.response) {
    40            response = (BOSPutObjectResponse*)output.response;
    41            NSLog(@"put object success!");
    42        }
    43
    44        if (output.error) {
    45            NSLog(@"put object failure");
    46        }
    47    });
    48    [task waitUtilFinished];
    49}

用户自定义元数据

BOS支持用户自定义元数据来对Object进行描述。

  • 基本流程

    1. 创建BOSObjectMetadata类的实例。
    2. 将自定义元数据字典设置到BOSObjectMetadata的userMetadata字段。
  • 示例代码

    Swift
    1BOSObjectMetadata* metadata = [[BOSObjectMetadata alloc] init];
    2metadata.contentEncoding = @"<encoding>";
    3metadata.contentDisposition = @"<content disposition>";
    4content.metadata = metadata;
    5
    6NSDictionary* customMetadata = @{
    7  @"name" : @"my-data"
    8};
    9content.metadata.userMetadata = customMetadata;

    说明:在上面代码中,用户自定义了一个名字为”name”,值为”my-data”的元数据。当用户下载此Object的时候,此元数据也可以一并得到。一个Object可以有多个类似的参数,但所有的User Meta总大小不能超过2KB。

  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSObjectContent* content = [[BOSObjectContent alloc] init];
    15    // 以文件方式
    16    content.objectData.file = @"<file path>";
    17
    18    // 或者以二进制数据方式
    19    NSData* data = [[NSData alloc] init];
    20    content.objectData.data = data;
    21
    22    BOSObjectMetadata* metadata = [[BOSObjectMetadata alloc] init];
    23    metadata.contentEncoding = @"<encoding>";
    24    metadata.contentDisposition = @"<content disposition>";
    25    content.metadata = metadata;
    26
    27    NSDictionary* customMetadata = @{
    28        @"name" : @"my-data"
    29    };
    30    content.metadata.userMetadata = customMetadata;
    31
    32    BOSPutObjectRequest* request = [[BOSPutObjectRequest alloc] init];
    33    request.bucket = @"<bucketname>";
    34    request.key = @"<objectname>";
    35    request.objectContent = content;
    36
    37    __block BOSPutObjectResponse* response = nil;
    38    BCETask* task = [client putObject:request];
    39    task.then(^(BCEOutput* output) {
    40        if (output.progress) {
    41            NSLog(@"put object progress is %@", output.progress);
    42        }
    43
    44        if (output.response) {
    45            response = (BOSPutObjectResponse*)output.response;
    46            NSLog(@"put object success!");
    47        }
    48
    49        if (output.error) {
    50            NSLog(@"put object failure");
    51        }
    52    });
    53    [task waitUtilFinished];
    54}

查看Bucket中的Object

简单查询

查看Bucket中Object列表。

  • 基本流程

    1. 创建BOSClient类的实例。
    2. 执行BOSClient listObjects方法,会返回BOSListObjectsResponse类的实例。
    3. 可以对BOSListObjectsResponse类型的contents字段进行枚举,获取key/lastModified/eTag/size/owner。
  • 示例代码

    Swift
    1BOSListObjectsRequest* listObjRequest = [[BOSListObjectsRequest alloc] init];
    2listObjRequest.bucket = @"<bucketname>";
    3
    4__block BOSListObjectsResponse* listObjResponse = nil;
    5BCETask* task = [client listObjects:listObjRequest];
    6task.then(^(BCEOutput* output) {
    7  if (output.response) {
    8      listObjResponse = (BOSListObjectsResponse*)output.response;
    9
    10      for (BOSObjectInfo* object in listObjResponse.contents) {
    11          NSLog(@"the object key is %@", object.key);
    12          NSLog(@"the object lastModified is %@", object.lastModified);
    13          NSLog(@"the object eTag is %@", object.eTag);
    14          NSLog(@"the object size is %llu", object.size);
    15          NSLog(@"the object owner id is %@", object.owner.ownerID);
    16      }
    17  }
    18
    19  if (output.error) {
    20      NSLog(@"list objects failure");
    21  }
    22});
    23[task waitUtilFinished];

    说明: listObjects方法返回BOSListObjectsResponse对象,BOSListObjectsResponse对象包含了此次listObject请求的返回结果。用户可以通过BOSListObjectsResponse中的contents属性获取所有Object的描述信息。

    • 默认情况下,如果Bucket中的Object数量大于1000,则只会返回1000个Object,并且返回结果中isTruncated值为YES,并返回nextMarker做为下次读取的起点。
    • 若想获取更多的Object,可以使用marker参数分次读取,请参考扩展查询。
  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSListObjectsRequest* listObjRequest = [[BOSListObjectsRequest alloc] init];
    15    listObjRequest.bucket = @"<bucketname>";
    16
    17    __block BOSListObjectsResponse* listObjResponse = nil;
    18    BCETask* task = [client listObjects:listObjRequest];
    19    task.then(^(BCEOutput* output) {
    20        if (output.response) {
    21            listObjResponse = (BOSListObjectsResponse*)output.response;
    22
    23            for (BOSObjectInfo* object in listObjResponse.contents) {
    24                NSLog(@"the object key is %@", object.key);
    25                NSLog(@"the object lastModified is %@", object.lastModified);
    26                NSLog(@"the object eTag is %@", object.eTag);
    27                NSLog(@"the object size is %llu", object.size);
    28                NSLog(@"the object owner id is %@", object.owner.ownerID);
    29            }
    30        }
    31
    32        if (output.error) {
    33            NSLog(@"list objects failure");
    34        }
    35    });
    36    [task waitUtilFinished];
    37}

扩展查询

用户可以通过设置BOSListObjectsResquest参数来完成更多扩展查询操作设置。BOSListObjectsResquest中可以设置的扩展参数如下:

参数名称 说明 默认值
maxKeys 设定此次返回Object的最大个数,不可超过1000。 1000
prefix 设定objectKey的前缀,前缀是指objectKey包含并以prefix的值作为开始。通常与delimiter配合在查询模拟文件夹中使用。 -
delimiter 是一个分隔符,用来对objectKey进行分层。通常与prefix配合在查询模拟文件夹中使用。从prefix开始到第一次出现delimiter字符之间的objectKey称为:commonPrefixes。 -
marker 是一个字符串,用来设定返回结果的起始位置。设定marker值之后,返回的Object会从marker值之后按字母排序开始返回。 -
  • 基本流程

    1. 创建BOSListObjectsResquest类的实例。
    2. 设置BOSListObjectsResquest的delimiter/marker/prefix/maxKeys等字段,实现更多的扩展查询操作。
    3. 创建BOSClient类的实例,执行listObjects。
  • 示例代码

    Swift
    1BOSListObjectsRequest* listObjRequest = [[BOSListObjectsRequest alloc] init];
    2listObjRequest.bucket = @"<bucketname>";
    3listObjRequest.marker = @"<marker>";
    4
    5__block BOSListObjectsResponse* listObjResponse = nil;
    6BCETask* task = [client listObjects:listObjRequest];
    7task.then(^(BCEOutput* output) {
    8  if (output.response) {
    9      listObjResponse = (BOSListObjectsResponse*)output.response;
    10
    11      for (BOSObjectInfo* object in listObjResponse.contents) {
    12          NSLog(@"the object key is %@", object.key);
    13          NSLog(@"the object lastModified is %@", object.lastModified);
    14          NSLog(@"the object eTag is %@", object.eTag);
    15          NSLog(@"the object size is %llu", object.size);
    16          NSLog(@"the object owner id is %@", object.owner.ownerID);
    17      }
    18  }
    19
    20  if (output.error) {
    21      NSLog(@"list objects failure");
    22  }
    23});
    24[task waitUtilFinished];
  • 完整示例

    示例一:

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSListObjectsRequest* listObjRequest = [[BOSListObjectsRequest alloc] init];
    15    listObjRequest.bucket = @"<bucketname>";
    16    listObjRequest.marker = @"<marker>";
    17
    18    __block BOSListObjectsResponse* listObjResponse = nil;
    19    BCETask* task = [client listObjects:listObjRequest];
    20    task.then(^(BCEOutput* output) {
    21        if (output.response) {
    22            listObjResponse = (BOSListObjectsResponse*)output.response;
    23
    24            for (BOSObjectInfo* object in listObjResponse.contents) {
    25                NSLog(@"the object key is %@", object.key);
    26                NSLog(@"the object lastModified is %@", object.lastModified);
    27                NSLog(@"the object eTag is %@", object.eTag);
    28                NSLog(@"the object size is %llu", object.size);
    29                NSLog(@"the object owner id is %@", object.owner.ownerID);
    30            }
    31        }
    32
    33        if (output.error) {
    34            NSLog(@"list objects failure");
    35        }
    36    });
    37    [task waitUtilFinished];
    38}

    示例二:使用nextMarker的完整示例。

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSListObjectsRequest* listObjRequest = [[BOSListObjectsRequest alloc] init];
    15    listObjRequest.bucket = @"<bucketname>";
    16    listObjRequest.marker = @"<marker>";
    17
    18    __block BOSListObjectsResponse* listObjResponse = nil;
    19    BCETask* task = [client listObjects:listObjRequest];
    20    task.then(^(BCEOutput* output) {
    21        if (output.response) {
    22            listObjResponse = (BOSListObjectsResponse*)output.response;
    23        }
    24
    25        if (output.error) {
    26            NSLog(@"list objects failure");
    27        }
    28    });
    29    [task waitUtilFinished];
    30
    31    if (listObjResponse != nil) {
    32        listObjRequest.marker = listObjResponse.nextMarker;
    33        task = [client listObjects:listObjRequest];
    34        task.then(^(BCEOutput* output) {
    35            if (output.response) {
    36                listObjResponse = (BOSListObjectsResponse*)output.response;
    37
    38                for (BOSObjectInfo* object in listObjResponse.contents) {
    39                    NSLog(@"the object key is %@", object.key);
    40                    NSLog(@"the object lastModified is %@", object.lastModified);
    41                    NSLog(@"the object eTag is %@", object.eTag);
    42                    NSLog(@"the object size is %llu", object.size);
    43                    NSLog(@"the object owner id is %@", object.owner.ownerID);
    44                }
    45            }
    46        });
    47    }
    48}

查询模拟文件夹

由于BOS本身是一个(<Key>,<Value>)的存储系统,所以原则上并不会存在“文件夹”的概念,但您可以通过delimiter和prefix参数的配合进行文件夹功能模拟。

假设Bucket中有5个文件:bos.jpg,fun/,fun/test.jpg,fun/movie/001.avi,fun/movie/007.avi,可以把 “/” 符号作为分隔符模拟文件夹。

递归列出模拟文件夹下所有文件

可以通过设置prefix参数来获取某个模拟文件夹下所有的文件:

Swift
1BOSListObjectsRequest* listObjRequest = [[BOSListObjectsRequest alloc] init];
2listObjRequest.bucket = @"<bucketname>";
3 listObjRequest.prefix = @"fun/";
4
5__block BOSListObjectsResponse* listObjResponse = nil;
6BCETask* task = [client listObjects:listObjRequest];
7task.then(^(BCEOutput* output) {
8    if (output.response) {
9        listObjResponse = (BOSListObjectsResponse*)output.response;
10
11        for (BOSObjectInfo* object in listObjResponse.contents) {
12            NSLog(@"%@", object.key);
13        }
14    }
15});
16[task waitUtilFinished];

输出:

Swift
1Objects:
2fun/
3fun/movie/001.avi
4fun/movie/007.avi
5fun/test.jpg

查看模拟文件夹下的文件和子文件夹

在prefix和delimiter结合的情况下,可以列出模拟文件夹下的文件和子文件夹:

Swift
1BOSListObjectsRequest* listObjRequest = [[BOSListObjectsRequest alloc] init];
2listObjRequest.bucket = @"<bucketname>";
3
4// 指定"/"为模拟文件夹的分隔符
5listObjRequest.delimiter = @"/";
6
7// 列出fun文件夹下的所有文件和子文件夹
8listObjRequest.prefix = @"fun/";
9
10__block BOSListObjectsResponse* listObjResponse = nil;
11BCETask* task = [client listObjects:listObjRequest];
12task.then(^(BCEOutput* output) {
13    if (output.response) {
14        listObjResponse = (BOSListObjectsResponse*)output.response;
15    }
16
17    if (output.error) {
18        NSLog(@"list objects failure");
19    }
20});
21[task waitUtilFinished];
22
23// 遍历所有Object
24NSLog(@"Objects:");
25for (BOSObjectInfo* object in listObjResponse.contents) {
26    NSLog(@"%@", object.key);
27}
28
29// 遍历所有CommonPrefix
30NSLog(@"CommonPrefixs:");
31for (NSString* commonPrefix in listObjResponse.commonPrefixes) {
32    NSLog(@"%@", commonPrefix);
33}

输出:

Swift
1Objects:
2fun/
3fun/test.jpg
4
5CommonPrefixs:
6fun/movie/

说明: 返回的结果中,contents的列表中给出的是fun文件夹下的文件。而commonPrefixs的列表中给出的是fun文件夹下的所有子文件夹。可以看出fun/movie/001.avi,fun/movie/007.avi两个文件并没有被列出来,因为它们属于fun文件夹下的movie子文件夹下的文件。

获取Object

简单的获取Object

用户可以通过如下代码将Object读取到内存中。

  • 基本流程

    1. 创建BOSClient类的实例。
    2. 执行BOSClient getObject方法,会返回BOSGetObjectResponse实例。
    3. 访问BOSGetObjectResponse示例的objectContent.objectData.data属性,获取数据。
  • 示例代码

    Swift
    1__block BOSGetObjectResponse* getObjResponse = nil;
    2BOSGetObjectRequest* getObjRequest = [[BOSGetObjectRequest alloc] init];
    3getObjRequest.bucket = @"<bucketname>";
    4getObjRequest.key = @"<objectname>";
    5BCETask* task = [client getObject:getObjRequest];
    6task.then(^(BCEOutput* output) {
    7  if (output.response) {
    8      getObjResponse = (BOSGetObjectResponse*)output.response;
    9      NSLog(@"get object success!");
    10  }
    11
    12  if (output.error) {
    13      NSLog(@"get object failure with %@", outpu****t.error);
    14  }
    15
    16  if (output.progress) {
    17      NSLog(@"the get object progress is %@", output.progress);
    18  }
    19});
    20[task waitUtilFinished];
    21
    22// 获取内存中的数据
    23NSData* data = getObjResponse.objectContent.objectData.data;

    注意:

    • BOSObjectContent中包含了Object的各种信息,包含Object所在的Bucket、Object的名称、MetaData以及数据存储。
    • BOSObjectMetadata中包含了Object上传时定义的ETag,Http Header以及自定义的元数据。
    • 通过BOSObjectContent的objectData属性,获取到Object的数据。
  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    __block BOSGetObjectResponse* getObjResponse = nil;
    15    BOSGetObjectRequest* getObjRequest = [[BOSGetObjectRequest alloc] init];
    16    getObjRequest.bucket = @"<bucketname>";
    17    getObjRequest.key = @"<objectname>";
    18    BCETask* task = [client getObject:getObjRequest];
    19    task.then(^(BCEOutput* output) {
    20        if (output.response) {
    21            getObjResponse = (BOSGetObjectResponse*)output.response;
    22            NSLog(@"get object success!");
    23        }
    24
    25        if (output.error) {
    26            NSLog(@"get object failure with %@", output.error);
    27        }
    28
    29        if (output.progress) {
    30            NSLog(@"the get object progress is %@", output.progress);
    31        }
    32    });
    33    [task waitUtilFinished];
    34
    35    NSData* data = getObjResponse.objectContent.objectData.data;
    36}

下载Object的一部分内容

  • 基本流程

    1. 创建BOSGetObjectRequest类的实例。
    2. BOSGetObjectRequestt实例的rangeStart和/或rangeEnd字段。
    3. 执行client getObject操作。
  • 示例代码

    Swift
    1__block BOSGetObjectResponse* getObjResponse = nil;
    2BOSGetObjectRequest* getObjRequest = [[BOSGetObjectRequest alloc] init];
    3getObjRequest.bucket = @"<bucketname>";
    4getObjRequest.key = @"<objectname>";
    5
    6// 获取前100个字节
    7getObjRequest.rangeStart = @"0";
    8getObjRequest.rangeEnd = @"99";
    9
    10BCETask* task = [client getObject:getObjRequest];
    11task.then(^(BCEOutput* output) {
    12    if (output.response) {
    13        getObjResponse = (BOSGetObjectResponse*)output.response;
    14        NSLog(@"get object success!");
    15    }
    16
    17    if (output.error) {
    18        NSLog(@"get object failure with %@", output.error);
    19    }
    20
    21    if (output.progress) {
    22        NSLog(@"the get object progress is %@", output.progress);
    23    }
    24});
    25[task waitUtilFinished];
    26
    27NSData* data = getObjResponse.objectContent.objectData.data;

    说明:用户可以用此功能实现文件的分段下载和断点续传。

下载Object到指定路径

用户可以通过如下代码直接将Object下载到指定路径。

  • 基本流程

    1. 创建BOSGetObjectRequest类的实例。
    2. 设置要保存的文件名到BOSGetObjectRequest实例的file字段。
    3. 执行client getObject操作。
    4. Object可以直接下载到指定路径。
  • 示例代码

    Swift
    1__block BOSGetObjectResponse* getObjResponse = nil;
    2BOSGetObjectRequest* getObjRequest = [[BOSGetObjectRequest alloc] init];
    3getObjRequest.bucket = @"<bucketname>";
    4getObjRequest.key = @"<objectname>";
    5
    6// 设置保存到的文件路径
    7getObjRequest.file = @"<file>";
    8
    9BCETask* task = [client getObject:getObjRequest];
    10task.then(^(BCEOutput* output) {
    11    if (output.response) {
    12        getObjResponse = (BOSGetObjectResponse*)output.response;
    13        NSLog(@"get object success!");
    14    }
    15
    16    if (output.error) {
    17        NSLog(@"get object failure with %@", output.error);
    18    }
    19
    20    if (output.progress) {
    21        NSLog(@"the get object progress is %@", output.progress);
    22    }
    23});
    24[task waitUtilFinished];

获取Object的storageClass

Object的storage class属性分为STANDARD(标准存储), STANDARD_IA(低频存储)和COLD(冷存储)。

示例代码

Swift
1__block BOSGetObjectMetadataResponse* getObjMetaResponse = nil;
2BCETask* task = [client getObjectMetadata:@"<bucketname>" objectKey:@"<objectname>"];
3task.then(^(BCEOutput* output) {
4    if (output.response) {
5        getObjMetaResponse = (BOSGetObjectMetadataResponse*)output.response;
6        NSString storageClass = getObjMetaResponse.storageClass;
7        NSLog(@"get object storageClass success!");
8    }
9
10    if (output.error) {
11        NSLog(@"get object storageClass failure");
12    }
13});
14[task waitUtilFinished];

只获取ObjectMetadata

通过getObjectMetadata 方法可以只获取 Object metadata 而不获取Object的实体。

  • 示例代码

    Swift
    1__block BOSGetObjectMetadataResponse* getObjMetaResponse = nil;
    2BCETask* task = [client getObjectMetadata:@"<bucketname>" objectKey:@"<objectname>"];
    3task.then(^(BCEOutput* output) {
    4    if (output.response) {
    5        getObjMetaResponse = (BOSGetObjectMetadataResponse*)output.response;
    6        NSLog(@"get object metadata success!");
    7    }
    8
    9    if (output.error) {
    10        NSLog(@"get object metadata failure");
    11    }
    12});
    13[task waitUtilFinished];

获取Object的URL

您可以通过如下代码获取指定Object的URL,该功能通常用于您将Object的URL临时分享给其他用户的场景。

  • 基本流程

    1. 创建BOSClient类的实例。
    2. 执行BOSClient generatePresignedUrl方法。
    3. 返回一个Object的URL。
  • 示例代码

    Swift
    1__block BOSGeneratePresignedUrlResponse *generateObjetUrlRes = nil;
    2  BCEOutput_ output = [client generatePresignedUrl:@"<bucketname>" objectKey:@"<objectname>" expirationInSeconds:<ExpirationInSeconds>];
    3  if (output.response) {
    4      generateObjetUrlRes = (BOSGeneratePresignedUrlResponse_)output.response;
    5      NSLog(@"get url success, the usrlstting is : %@", [generateObjetUrlRes.objectUrl absoluteString]);
    6  }
    7  if (output.error) {
    8      NSLog(@"get url failure, error : %@:", output.error);
    9  }

说明: ExpirationInSeconds为指定的URL有效时长,时间从当前时间算起,为可选参数,不配置时系统默认值为1800秒。如果要设置为永久不失效的时间,可以将ExpirationInSeconds参数设置为 -1,不可设置为其他负数。

  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    __block BOSGeneratePresignedUrlResponse *generateObjetUrlRes = nil;
    15      BCEOutput* output = [client generatePresignedUrl:@"<bucketname>" objectKey:@"<objectname>" expirationInSeconds:<ExpirationInSeconds>];
    16    if (output.response) {
    17    generateObjetUrlRes = 	(BOSGeneratePresignedUrlResponse*)output.response;
    18    NSLog(@"get url success, the usrlstting is : %@", [generateObjetUrlRes.objectUrl absoluteString]);
    19    }
    20    if (output.error) {
    21    NSLog(@"get url failure, error : %@:", output.error);
    22    }
    23}

删除Object

  • 基本流程

    1. 创建BOSClient类的实例。
    2. 执行BOSClient deleteObject方法。
    3. 若操作失败后产生错误。
  • 示例代码

    Swift
    1__block BOSDeleteObjectResponse* response = nil;
    2BCETask* task = [client deleteObject:@"<bucketname>" objectKey:@"<objectname>"];
    3task.then(^(BCEOutput* output) {
    4    if (output.response) {
    5        response = (BOSDeleteObjectResponse*)output.response;
    6        NSLog(@"delete obj success!");
    7    }
    8
    9    if (output.error) {
    10        NSLog(@"delete obj failure");
    11    }
    12});
    13[task waitUtilFinished];
  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    __block BOSDeleteObjectResponse* response = nil;
    15    BCETask* task = [client deleteObject:@"<bucketname>" objectKey:@"<objectname>"];
    16    task.then(^(BCEOutput* output) {
    17      if (output.response) {
    18          response = (BOSDeleteObjectResponse*)output.response;
    19          NSLog(@"delete obj success!");
    20      }
    21
    22      if (output.error) {
    23          NSLog(@"delete obj failure");
    24      }
    25    });
    26    [task waitUtilFinished];
    27}

拷贝Object

简单拷贝Object

  • 基本流程

    1. 创建BOSClient类的实例。
    2. 执行BOSClient copyObject方法。
    3. 返回BOSCopyObjectResponse类实例,可通过eTag/lastModified等属性获取eTag和最后修改时间。
  • 示例代码

    Swift
    1BOSCopyObjectRequest* request = [[BOSCopyObjectRequest alloc] init];
    2request.bucket = @"<bucketname>";
    3request.key = @"<objectname>";
    4request.source = @"<sourceBucket>/<sourceObject";
    5
    6__block BOSCopyObjectResponse* response = nil;
    7BCETask* task = [client copyObject:request];
    8task.then(^(BCEOutput* output) {
    9    if (output.response) {
    10        response = (BOSCopyObjectResponse*)output.response;
    11        NSLog(@"copy obj success!");
    12    }
    13
    14    if (output.error) {
    15        NSLog(@"copy obj failure");
    16    }
    17});
    18[task waitUtilFinished];
  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSCopyObjectRequest* request = [[BOSCopyObjectRequest alloc] init];
    15    request.bucket = @"<bucketname>";
    16    request.key = @"<objectname>";
    17    request.source = @"<sourceBucket>/<sourceObject";
    18
    19    __block BOSCopyObjectResponse* response = nil;
    20    BCETask* task = [client copyObject:request];
    21    task.then(^(BCEOutput* output) {
    22      if (output.response) {
    23          response = (BOSCopyObjectResponse*)output.response;
    24          NSLog(@"copy obj success!");
    25      }
    26
    27      if (output.error) {
    28          NSLog(@"copy obj failure");
    29      }
    30    });
    31    [task waitUtilFinished];
    32}

    说明:copyObject 方法返回一个 BOSCopyObjectResponse 对象,该对象中包含了新Object的ETag和修改时间。

指定条件拷贝Object

您也可以通过指定条件来实现Object的拷贝。该功能一般用于如下场景:

  • Copy一个Object但重新设置meta。
  • 重置某个现有Object的meta(把源和目标设置为同一个Object)。
  • 当源Object的eTag与指定的eTag相同时复制;
  • 当源Object的eTag与指定的eTag不相同时复制;
  • 当源Object的在指定的时间后没有被修改时复制;
  • 当源Object的在指定的时间后被修改过时复制;

具体内容如下:

  • 基本流程

    1. 创建BOSCopyObjectRequest类的实例,传入<source>,<ifMatchEtag>, <ifNotMatchEtag>,<ifModifiedSince>,<ifUnmodifiedSince>, <metadataDirective>参数。
    2. 返回BOSCopyObjectResponse类实例,可通过eTag/lastModified属性获取eTag和最后修改时间。
  • 示例代码

    Swift
    1BOSCopyObjectRequest* request = [[BOSCopyObjectRequest alloc] init];
    2request.bucket = @"<bucketname>";
    3request.key = @"<objectname>";
    4request.source = @"<sourceBucket>/<sourceObject";
    5request.metadataDirective = @"replace";
    6request.ifModifiedSince = @"Wed, 01 Mar 2006 12:00:00 GMT";
    7
    8__block BOSCopyObjectResponse* response = nil;
    9BCETask* task = [client copyObject:request];
    10task.then(^(BCEOutput* output) {
    11  if (output.response) {
    12      response = (BOSCopyObjectResponse*)output.response;
    13      NSLog(@"copy obj success!");
    14  }
    15
    16  if (output.error) {
    17      NSLog(@"copy obj failure");
    18  }
    19});
    20[task waitUtilFinished];

    说明:BOSCopyObjectRequest 允许用户修改目的Object的ObjectMeta,同时也提供 MatchingETagConstraints 参数的设定。

Object的分块上传

除了通过putObject()方法上传文件到BOS以外,BOS还提供了另外一种上传模式:分块上传(Multipart Upload)。用户可以在如下的应用场景内(但不仅限于此),使用分块上传模式,如:

  • 需要支持断点上传。
  • 上传超过5GB大小的文件。
  • 网络条件较差,和BOS的服务器之间的连接经常断开。
  • 需要流式地上传文件。
  • 上传文件之前,无法确定上传文件的大小。

分块完成Multipart Upload

假设有一个文件,本地路径为/path/to/file.zip,由于文件比较大,使用分块上传其传输到BOS中。

  • 基本流程

    1. 初始化Multipart Upload。
    2. 上传分块。
    3. 完成分块上传。

初始化Multipart Upload

使用initiateMultipartUpload方法来初始化一个分块上传事件:

  • 示例代码

    Swift
    1BOSInitiateMultipartUploadRequest* initMPRequest = [[BOSInitiateMultipartUploadRequest alloc] init];
    2initMPRequest.bucket = @"<bucketname>";
    3initMPRequest.key = @"<objectname>";
    4initMPRequest.contentType = @"<content type>";
    5
    6__block BOSInitiateMultipartUploadResponse* initMPResponse = nil;
    7BCETask* task = [client initiateMultipartUpload:initMPRequest];
    8task.then(^(BCEOutput* output) {
    9  if (output.response) {
    10      initMPResponse = (BOSInitiateMultipartUploadResponse*)output.response;
    11      NSLog(@"initiate multipart upload success!");
    12  }
    13
    14  if (output.error) {
    15      NSLog(@"initiate multipart upload failure");
    16  }
    17});
    18[task waitUtilFinished];
    19
    20NSString* uploadID = initMPResponse.uploadId;

    说明:initiateMultipartUpload的返回结果中含有uploadId,它是区分分块上传事件的唯一标识,在后面的操作中,我们将用到它。

上传分块

将文件分块上传。

  • 示例代码

    Swift
    1// 计算分块个数
    2NSString* file = @"/path/to/file.zip";
    3NSDictionary<NSString*, id>* attr = [[NSFileManager defaultManager] attributesOfItemAtPath:file error:nil];
    4uint64_t fileSize = attr.fileSize;
    5uint64_t partSize = 1024 * 1024 * 5L;
    6uint64_t partCount = fileSize / partSize;
    7if (fileSize % partSize != 0) {
    8  ++partCount;
    9}
    10
    11NSMutableArray<BOSPart*>* parts = [NSMutableArray array];
    12NSFileHandle* handle = [NSFileHandle fileHandleForReadingAtPath:@"/path/to/file.zip"];
    13for (uint64_t i = 0; i < partCount; ++i) {
    14  // seek
    15  uint64_t skip = partSize * i;
    16  [handle seekToFileOffset:skip];
    17  uint64_t size = (partSize < fileSize - skip) ? partSize : fileSize - skip;
    18
    19  // data
    20  NSData* data = [handle readDataOfLength:size];
    21
    22  // request
    23  BOSUploadPartRequest* uploadPartRequest = [[BOSUploadPartRequest alloc] init];
    24  uploadPartRequest.bucket = @"<bucketname>";
    25  uploadPartRequest.key = @"<objectname>";
    26  uploadPartRequest.objectData.data = data;
    27  uploadPartRequest.partNumber = i + 1;
    28  uploadPartRequest.uploadId = uploadID;
    29
    30  __block BOSUploadPartResponse* uploadPartResponse = nil;
    31  task = [client uploadPart:uploadPartRequest];
    32  task.then(^(BCEOutput* output) {
    33      if (output.response) {
    34          uploadPartResponse = (BOSUploadPartResponse*)output.response;
    35          BOSPart* part = [[BOSPart alloc] init];
    36          part.partNumber = i + 1;
    37          part.eTag = uploadPartResponse.eTag;
    38                  [parts addObject:part];
    39      }
    40  });
    41  [task waitUtilFinished];
    42}

    注意:上面代码的核心是调用uploadPart方法来上传每一个分块,但是要注意以下几点:

    • uploadPart方法要求除最后一个Part以外,其他的Part大小都要大于等于5MB。但是Upload Part接口并不会立即校验上传Part的大小;只有当Complete Multipart Upload的时候才会校验。
    • 为了保证数据在网络传输过程中不出现错误,建议您在uploadPart后,使用每个分块BOS返回的Content-MD5值分别验证已上传分块数据的正确性。当所有分块数据合成一个Object后,不再含MD5值。
    • Part号码的范围是1~10000。如果超出这个范围,BOS将返回InvalidArgument的错误码。
    • 每次上传Part时都要把流定位到此次上传块开头所对应的位置。
    • 每次上传Part之后,BOS的返回结果会包含一个BOSPart对象,它是上传块的ETag与块编号(PartNumber)的组合,在后续完成分块上传的步骤中会用到它,因此需要将其保存起来。一般来讲这些BOSPart对象将被保存到数组中。

完成分块上传

  • 示例代码

    Swift
    1BOSCompleteMultipartUploadRequest* compMultipartRequest = [[BOSCompleteMultipartUploadRequest alloc] init];
    2compMultipartRequest.bucket = @"<bucketname>";
    3compMultipartRequest.key = @"<objectname>";
    4compMultipartRequest.uploadId = uploadID;
    5compMultipartRequest.parts = parts;
    6
    7__block BOSCompleteMultipartUploadResponse* complResponse = nil;
    8task = [client completeMultipartUpload:compMultipartRequest];
    9task.then(^(BCEOutput* output) {
    10  if (output.response) {
    11      complResponse = (BOSCompleteMultipartUploadResponse*)output.response;
    12      NSLog(@"complte multiparts success!");
    13  }
    14
    15  if (output.error) {
    16      NSLog(@"complte multiparts failure %@", output.error);
    17  }
    18});
    19[task waitUtilFinished];

    说明:上面代码中的 parts 是第二步中保存的parts的列表,BOS收到用户提交的Part列表后,会逐一验证每个数据Part的有效性。当所有的数据Part验证通过后,BOS将把这些数据part组合成一个完整的Object。

  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5// 初始化
    6BCECredentials* credentials = [[BCECredentials alloc] init];
    7credentials.accessKey = @"<access key>";
    8credentials.secretKey = @"<secret key>";
    9BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10configuration.credentials = credentials;
    11
    12BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14// 初始化分块上传
    15BOSInitiateMultipartUploadRequest* initMPRequest = [[BOSInitiateMultipartUploadRequest alloc] init];
    16initMPRequest.bucket = @"<bucketname>";
    17initMPRequest.key = @"<objectname>";
    18initMPRequest.contentType = @"<content type>";
    19
    20 __block BOSInitiateMultipartUploadResponse* initMPResponse = nil;
    21 BCETask* task = [client initiateMultipartUpload:initMPRequest];
    22 task.then(^(BCEOutput* output) {
    23     if (output.response) {
    24         initMPResponse = (BOSInitiateMultipartUploadResponse*)output.response;
    25         NSLog(@"initiate multipart upload success!");
    26     }
    27
    28     if (output.error) {
    29         NSLog(@"initiate multipart upload failure");
    30     }
    31 });
    32 [task waitUtilFinished];
    33
    34 NSString* uploadID = initMPResponse.uploadId;
    35
    36 // 计算分块个数
    37 NSString* file = @"/path/to/file.zip";
    38 NSDictionary<NSString*, id>* attr = [[NSFileManager defaultManager] attributesOfItemAtPath:file error:nil];
    39 uint64_t fileSize = attr.fileSize;
    40 uint64_t partSize = 1024 * 1024 * 5L;
    41 uint64_t partCount = fileSize / partSize;
    42 if (fileSize % partSize != 0) {
    43     ++partCount;
    44 }
    45
    46 NSMutableArray<BOSPart*>* parts = [NSMutableArray array];
    47
    48 NSFileHandle* handle = [NSFileHandle fileHandleForReadingAtPath:@"/path/to/file.zip"];
    49 for (uint64_t i = 0; i < partCount; ++i) {
    50     // seek
    51     uint64_t skip = partSize * i;
    52     [handle seekToFileOffset:skip];
    53     uint64_t size = (partSize < fileSize - skip) ? partSize : fileSize - skip;
    54
    55     // data
    56     NSData* data = [handle readDataOfLength:size];
    57
    58     // request
    59     BOSUploadPartRequest* uploadPartRequest = [[BOSUploadPartRequest alloc] init];
    60     uploadPartRequest.bucket = @"<bucketname>";
    61     uploadPartRequest.key = @"<objectname>";
    62     uploadPartRequest.objectData.data = data;
    63     uploadPartRequest.partNumber = i + 1;
    64     uploadPartRequest.uploadId = uploadID;
    65
    66     __block BOSUploadPartResponse* uploadPartResponse = nil;
    67     task = [client uploadPart:uploadPartRequest];
    68     task.then(^(BCEOutput* output) {
    69         if (output.response) {
    70             uploadPartResponse = (BOSUploadPartResponse*)output.response;
    71             BOSPart* part = [[BOSPart alloc] init];
    72             part.partNumber = i + 1;
    73             part.eTag = uploadPartResponse.eTag;
    74                     [parts addObject:part];
    75         }
    76     });
    77     [task waitUtilFinished];
    78 }
    79
    80 BOSCompleteMultipartUploadRequest* compMultipartRequest = [[BOSCompleteMultipartUploadRequest alloc] init];
    81 compMultipartRequest.bucket = @"<bucketname>";
    82 compMultipartRequest.key = @"<objectname>";
    83 compMultipartRequest.uploadId = uploadID;
    84 compMultipartRequest.parts = parts;
    85
    86 __block BOSCompleteMultipartUploadResponse* complResponse = nil;
    87 task = [client completeMultipartUpload:compMultipartRequest];
    88 task.then(^(BCEOutput* output) {
    89     if (output.response) {
    90         complResponse = (BOSCompleteMultipartUploadResponse*)output.response;
    91         NSLog(@"complte multiparts success!");
    92     }
    93
    94     if (output.error) {
    95         NSLog(@"complte multiparts failure %@", output.error);
    96     }
    97 });
    98 [task waitUtilFinished];
    99}

取消分块上传

用户可以使用abortMultipartUpload方法取消分块上传。

  • 示例代码

    Swift
    1BOSAbortMultipartUploadRequest* abortRequest = [[BOSAbortMultipartUploadRequest alloc] init];
    2abortRequest.bucket = @"bucket";
    3abortRequest.key = @"<objectname>";
    4abortRequest.uploadId = uploadID;
    5
    6__block BOSAbortMultipartUploadResponse* abortResponse = nil;
    7task = [client abortMultipartUpload:abortRequest];
    8task.then(^(BCEOutput* output) {
    9  if (output.response) {
    10      abortResponse = (BOSAbortMultipartUploadResponse*)output.response;
    11      NSLog(@"abort multiparts success!");
    12  }
    13
    14  if (output.error) {
    15      NSLog(@"abort multiparts failure %@", output.error);
    16  }
    17});
    18[task waitUtilFinished];

获取未完成的分块上传

用户可以使用listMultipartUploads方法获取Bucket内未完成的分块上传事件。

  • 基本流程

    1. 创建BOSListMultipartUploadsRequest类的实例,传入<BucketName>参数。
    2. 创建BOSClient类的实例,执行BOSClient listMultipartUploads方法。
    3. listMultipartUploads返回所有未完成的分块上传信息。
  • 示例代码

    Swift
    1BOSListMultipartUploadsRequest* listMultipartRequest = [[BOSListMultipartUploadsRequest alloc] init];
    2listMultipartRequest.bucket = @"<bucketname>";
    3
    4__block BOSListMultipartUploadsResponse* listMultipartResponse = nil;
    5task = [client listMultipartUploads:listMultipartRequest];
    6task.then(^(BCEOutput* output) {
    7  if (output.response) {
    8      listMultipartResponse = (BOSListMultipartUploadsResponse*)output.response;
    9      NSLog(@"list multipart success");
    10  }
    11
    12  if (output.error) {
    13      NSLog(@"list multipart failure %@", output.error);
    14  }
    15});
    16[task waitUtilFinished];

    注意:

    • 默认情况下,如果Bucket中的分块上传事件的数目大于1000,则只会返回1000个Object,并且返回结果中IsTruncated的值为True,同时返回nextKeyMarker作为下次读取的起点。
    • 若想获取更多分块上传事件,可以使用keyMarker参数分次读取。
  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSListMultipartUploadsRequest* listMultipartRequest = [[BOSListMultipartUploadsRequest alloc] init];
    15    listMultipartRequest.bucket = @"<bucketname>";
    16
    17    __block BOSListMultipartUploadsResponse* listMultipartResponse = nil;
    18    BCETask* task = [client listMultipartUploads:listMultipartRequest];
    19    task.then(^(BCEOutput* output) {
    20      if (output.response) {
    21          listMultipartResponse = (BOSListMultipartUploadsResponse*)output.response;
    22          NSLog(@"list multipart success");
    23      }
    24
    25      if (output.error) {
    26          NSLog(@"list multipart failure %@", output.error);
    27      }
    28    });
    29    [task waitUtilFinished];
    30
    31    for (BOSMultipartUpload* upload in listMultipartResponse.uploads) {
    32        NSLog(@"upload id : %@", upload.uploadId);
    33    }
    34}

获取所有已上传的分块信息

用户可以使用listParts方法获取某个上传事件中所有已上传的块。

  • 基本流程

    1. 创建BOSListPartsRequest类的实例,传入<BucketName>,<ObjectKey>, <UploadId>参数。
    2. 创建BOSClient类的实例,执行BOSClient listParts方法。
    3. listParts返回所有已上传part的信息。
  • 示例代码

    Swift
    1BOSListPartsRequest* listPartsRequest = [[BOSListPartsRequest alloc] init];
    2listPartsRequest.bucket = @"<bucketname>";
    3listPartsRequest.key = @"<objectname>";
    4listPartsRequest.uploadId = @"<upload id>";;
    5
    6__block BOSListPartsResponse* listPartsResponse = nil;
    7BCETask* task = [client listParts:listPartsRequest];
    8task.then(^(BCEOutput* output) {
    9  if (output.response) {
    10      listPartsResponse = (BOSListPartsResponse*)output.response;
    11      NSLog(@"list parts success!");
    12  }
    13
    14  if (output.error) {
    15      NSLog(@"list part failure %@", output.error);
    16  }
    17});
    18[task waitUtilFinished];
    19
    20for (BOSPart* part in listPartsResponse.parts) {
    21    NSLog(@"part etag %@", part.eTag);
    22}

    注意:

    • 默认情况下,如果Bucket中的分块上传事件的数目大于1000,则只会返回1000个Object,并且返回结果中IsTruncated的值为True,同时返回NextPartNumberMarker作为下次读取的起点。
    • 若想获取更多已上传的分块信息,可以使用PartNumberMarker参数分次读取。
  • 完整示例

    Swift
    1#import <BaiduBCEBasic/BaiduBCEBasic.h>
    2#import <BaiduBCEBOS/BaiduBCEBOS.h>
    3
    4void example(void) {
    5    // 初始化
    6    BCECredentials* credentials = [[BCECredentials alloc] init];
    7    credentials.accessKey = @"<access key>";
    8    credentials.secretKey = @"<secret key>";
    9    BOSClientConfiguration* configuration = [[BOSClientConfiguration alloc] init];
    10    configuration.credentials = credentials;
    11
    12    BOSClient* client = [[BOSClient alloc] initWithConfiguration:configuration];
    13
    14    BOSListPartsRequest* listPartsRequest = [[BOSListPartsRequest alloc] init];
    15    listPartsRequest.bucket = @"<bucketname>";
    16    listPartsRequest.key = @"<objectname>";
    17    listPartsRequest.uploadId = @"<upload id>";;
    18
    19    __block BOSListPartsResponse* listPartsResponse = nil;
    20    BCETask* task = [client listParts:listPartsRequest];
    21    task.then(^(BCEOutput* output) {
    22    if (output.response) {
    23        listPartsResponse = (BOSListPartsResponse*)output.response;
    24        NSLog(@"list parts success!");
    25    }
    26
    27    if (output.error) {
    28        NSLog(@"list part failure %@", output.error);
    29    }
    30    });
    31    [task waitUtilFinished];
    32
    33    for (BOSPart* part in listPartsResponse.parts) {
    34        NSLog(@"part etag %@", part.eTag);
    35    }
    36}

上一篇
日志
下一篇
版本变更记录