文件管理

对象存储 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
  • Java-SDK
  • arrow
  • 文件管理
本页目录
  • 上传文件
  • 简单上传
  • 追加上传
  • 分块上传
  • 封装分块上传
  • 断点续传上传
  • 抓取上传
  • 获取上传进度
  • 下载文件
  • 简单流式下载
  • 直接下载Object到文件
  • 范围下载
  • 下载图像处理后的文件
  • 其他使用方法
  • 取回归档存储类型文件
  • 取回归档类型文件
  • 变更文件存储等级
  • 获取文件下载URL
  • 列举存储空间中的文件
  • 简单列举
  • 通过参数复杂列举
  • 模拟文件夹功能
  • 列举Bucket中object的存储属性
  • 获取目录容量概览
  • Object权限控制
  • 设置Object的访问权限
  • 查看Object的权限
  • 删除Object的权限
  • 删除文件
  • 删除多个文件
  • 查看文件是否存在
  • 获取及更新文件元信息
  • 获取文件元信息
  • 修改文件元信息
  • 拷贝文件
  • 拷贝一个文件
  • 通过CopyObjectRequest拷贝Object
  • 分块拷贝
  • 选取文件
  • 选取CSV文件
  • 选取JSON文件

文件管理

更新时间:2025-08-21

上传文件

在BOS中,用户操作的基本数据单元是Object。Object包含Key、Meta和Data。其中,Key是Object的名字;Meta是用户对该Object的描述,由一系列Name-Value对组成;Data是Object的数据。

BOS Java SDK提供了丰富的文件上传接口,可以通过以下方式上传文件:

  • 简单上传
  • 追加上传
  • 分片上传
  • 断点续传上传

简单上传

BOS在简单上传的场景中,支持以指定文件形式、以数据流方式、以二进制串方式、以字符串方式执行Object上传,请参考如下代码,或简单上传Demo。

Java
1public void PutObject(BosClient client, String bucketName, String objectKey, byte[] byte1, String string1){
2    // 获取指定文件
3    File file = new File("/path/to/file.zip");
4    // 获取数据流
5    InputStream inputStream = new FileInputStream("/path/to/test.zip");
6	
7    // 以文件形式上传Object
8    PutObjectResponse putObjectFromFileResponse = client.putObject(bucketName, objectKey, file);
9    // 以数据流形式上传Object
10    PutObjectResponse putObjectResponseFromInputStream = client.putObject(bucketName, objectKey, inputStream);
11    // 以二进制串上传Object
12    PutObjectResponse putObjectResponseFromByte = client.putObject(bucketName, objectKey, byte1);
13    // 以字符串上传Object
14    PutObjectResponse putObjectResponseFromString = client.putObject(bucketName, objectKey, string1);
15    // 创建空目录,objectKey需要以正斜线结尾,例如test/
16    // BOS控制台默认会将以正斜线(/)结尾的对象,作为文件目录的形式展示
17    PutObjectResponse putObjectResponseFromString = client.putObject(bucketName, objectKey, "");
18	
19    // 打印ETag
20    System.out.println(putObjectFromFileResponse.getETag());
21}

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

设置文件元信息

文件元信息(Object Meta),是对用户在向BOS上传文件时,同时对文件进行的属性描述,主要分为分为两种:设置HTTP标准属性(HTTP Headers)和用户自定义的元信息。

  • 设定Object的Http Header

BOS Java SDK本质上是调用后台的HTTP接口,因此用户可以在上传文件时自定义Object的Http Header。常用的http header说明如下:

名称 描述 默认值
Content-MD5 文件数据校验,设置后BOS会启用文件内容MD5校验,把您提供的MD5与文件的MD5比较,不一致会抛出错误 无
Content-Type 文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如没有指,BOS则根据文件的扩展名自动生成,如文件没有扩展名则填默认值 application/octet-stream
Content-Disposition 指示MIME用户代理如何显示附加的文件,打开或下载,及文件名称 无
Content-Length 上传的文件的长度,超过流/文件的长度会截断,不足为实际值 流/文件时间长度
Expires 缓存过期时间 无
Cache-Control 指定该Object被下载时的网页的缓存行为 无
x-bce-content-crc32 上传object的CRC值(循环冗余校验码) 无

参考代码如下:

Java
1// 初始化上传输入流
2ObjectMetadata meta = new ObjectMetadata();
3
4// 设置ContentLength大小
5meta.setContentLength(1000);
6
7// 设置ContentType
8meta.setContentType("application/json");
9
10// 设置cache-control
11meta.setCacheControl("no-cache");
12
13// 设置x-bce-content-crc32,文件CRC32校验码需自行计算
14meta.setxBceCrc("0x74E947D0");
15
16client.putObject(bucketName, objectKey, content, meta);
  • 设置文件元信息

BOS支持用户在上传时设置object acl权限,取值为private和public-read。如下代码所示:

Java
1// 设置acl为私有
2PutObjectRequest request = new PutObjectRequest(bucketName, key, file);
3request.setxBceAcl("private");
4    
5// 上传Object
6client.putObject(bucketName, objectKey, content, meta);
  • 用户自定义元信息

BOS支持用户自定义元数据来对Object进行描述。如下代码所示:

Java
1// 设置自定义元数据name的值为my-data
2meta.addUserMetadata("name", "my-data");
3    
4// 上传Object
5client.putObject(bucketName, objectKey, content, meta);

提示:

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

上传Object时设置存储类型

BOS支持标准存储, 低频存储和冷存储,上传Object并存储为低频存储类型通过指定StorageClass实现,三种存储类型对应的参数如下:

存储类型 参数
标准存储 STANDRAD
低频存储 STANDARD_IA
冷存储 COLD

以低频存储为例,代码如下:

Java
1public void putObjectStorageClass(){
2    PutObjectRequest request = new PutObjectRequest(bucketName, key, file);
3    request.withStorageClass(BosClient.STORAGE_CLASS_STANDARD_IA);
4    client.putObject(request);
5}

追加上传

上文介绍的简单上传方式,创建的Object都是Normal类型,用户不可再进行追加写,这在日志、视频监控、视频直播等数据复写较频繁的场景中使用不方便。

正因如此,百度智能云BOS特别支持了AppendObject,即以追加写的方式上传文件。通过AppendObject操作创建的Object类型为Appendable Object,可以对该Object追加数据。AppendObject大小限制为0~5G。

通过AppendObject方式上传示例代码如下,或参考追加上传Demo。

Java
1public void AppendObject(BosClient client, String bucketName, String objectKey, byte[] byte1, String string1) {
2        // 获取指定文件
3        File file = new File("/path/to/file.zip");
4        // 获取数据流
5        InputStream inputStream = new FileInputStream("/path/to/test.zip");
6
7        // 以文件形式上传Object
8        AppendObjectResponse appendObjectFromFileResponse = client.appendObject(bucketName, objectKey, file);
9        // 以数据流形式上传Object
10        AppendObjectResponse appendObjectResponseFromInputStream = client.appendObject(bucketName, objectKey, inputStream);
11        // 以二进制串上传Object
12        AppendObjectResponse appendObjectResponseFromByte = client.appendObject(bucketName, objectKey, byte1);
13        // 以字符串上传Object
14        AppendObjectResponse appendObjectResponseFromString = client.appendObject(bucketName, objectKey, string1);
15
16        // 打印ETag
17        System.out.println(appendObjectFromFileResponse.getETag());
18        // 打印NextAppendOffset
19        System.out.println(appendObjectFromFileResponse.getNextAppendOffset());
20        // 打印ContentMd5
21        System.out.println(appendObjectFromFileResponse.getContentMd5());
22
23        // 追加上传的示例,需要在请求中加上下次追加写的位置
24        Long nextAppendOffset = appendObjectFromFileResponse.getNextAppendOffset();
25        AppendObjectRequest appendObjectFromFileRequest = new AppendObjectRequest(bucketName,objectKey,file);
26        appendObjectFromFileRequest.setOffset(nextAppendOffset);
27        AppendObjectResponse appendObjectFromFileResponse = client.appendObject(appendObjectFromFileRequest);
28    }

分块上传

除了通过简单上传及追加上传方式将文上传到BOS以外,BOS还提供了另外一种上传模式 —— Multipart Upload。用户可以在如下的应用场景内(但不仅限于此),使用Multipart Upload上传模式,如:

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

下面将一步步介绍Multipart Upload的实现。假设有一个文件,本地路径为 /path/to/file.zip ,由于文件比较大,将其分块传输到BOS中。或参考分块上传Demo

初始化Multipart Upload

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

Java
1// 开始Multipart Upload
2InitiateMultipartUploadRequest initiateMultipartUploadRequest =
3        new InitiateMultipartUploadRequest(bucketName, objectKey);
4InitiateMultipartUploadResponse initiateMultipartUploadResponse =
5        client.initiateMultipartUpload(initiateMultipartUploadRequest);
6    
7// 打印UploadId
8System.out.println("UploadId: " + initiateMultipartUploadResponse.getUploadId());

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

  • 上传低频存储类型Object的初始化

初始化低频存储的一个分块上传事件:

Java
1public void putMultiUploadStorageClass(){
2    InitiateMultipartUploadRequest iniReq = new InitiateMultipartUploadRequest(bucketName, key);
3    iniReq.withStorageClass(BosClient.STORAGE_CLASS_STANDARD_IA);
4    client.initiateMultipartUpload(iniReq);
5}
  • 上传冷存储类型Object的初始化

初始化低频存储的一个分块上传事件:

Java
1public void putMultiUploadStorageClass(){
2    InitiateMultipartUploadRequest iniReq = new InitiateMultipartUploadRequest(bucketName, key);
3    iniReq.withStorageClass(BosClient.STORAGE_CLASS_COLD);
4    client.initiateMultipartUpload(iniReq);
5}

上传分块

接着,把文件分块上传。

Java
1// 设置每块为 5MB
2final long partSize = 1024 * 1024 * 5L;
3    
4File partFile = new File("/path/to/file.zip");
5    
6// 计算分块数目
7int partCount = (int) (partFile.length() / partSize);
8if (partFile.length() % partSize != 0){
9    partCount++;
10}
11    
12// 新建一个List保存每个分块上传后的ETag和PartNumber
13List<PartETag> partETags = new ArrayList<PartETag>();
14    
15for(int i = 0; i < partCount; i++){
16    // 获取文件流
17    FileInputStream fis = new FileInputStream(partFile);
18    
19    // 跳到每个分块的开头
20    long skipBytes = partSize * i;
21    fis.skip(skipBytes);
22    
23    // 计算每个分块的大小
24    long size = partSize < partFile.length() - skipBytes ?
25            partSize : partFile.length() - skipBytes;
26    
27    // 创建UploadPartRequest,上传分块
28    UploadPartRequest uploadPartRequest = new UploadPartRequest();
29    uploadPartRequest.setBucketName(bucketName);
30    uploadPartRequest.setKey(objectKey);
31    uploadPartRequest.setUploadId(initiateMultipartUploadResponse.getUploadId());
32    uploadPartRequest.setInputStream(fis);
33    uploadPartRequest.setPartSize(size);
34    uploadPartRequest.setPartNumber(i + 1);
35    UploadPartResponse uploadPartResponse = client.uploadPart(uploadPartRequest);
36    
37    // 将返回的PartETag保存到List中。
38    partETags.add(uploadPartResponse.getPartETag());
39   
40    // 关闭文件
41    fis.close();
42}

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

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

完成分块上传

如下代码所示,完成分块上传:

Java
1CompleteMultipartUploadRequest completeMultipartUploadRequest =
2        new CompleteMultipartUploadRequest(bucketName, objectKey, initiateMultipartUploadResponse.getUploadId(), partETags);
3    
4// 完成分块上传
5CompleteMultipartUploadResponse completeMultipartUploadResponse =
6        client.completeMultipartUpload(completeMultipartUploadRequest);
7    
8// 打印Object的ETag
9System.out.println(completeMultipartUploadResponse.getETag());

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

取消分块上传事件

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

Java
1AbortMultipartUploadRequest abortMultipartUploadRequest =
2        new AbortMultipartUploadRequest(bucketName, objectKey, uploadId);
3    
4// 取消分块上传
5client.abortMultipartUpload(abortMultipartUploadRequest);

获取未完成的分块上传事件

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

Java
1ListMultipartUploadsRequest listMultipartUploadsRequest = 
2    new ListMultipartUploadsRequest(bucketName);
3
4// 获取Bucket内所有上传事件
5ListMultipartUploadsResponse listing = client.listMultipartUploads(listMultipartUploadsRequest);
6    
7// 遍历所有上传事件
8for (MultipartUploadSummary multipartUpload : listing.getMultipartUploads()) {
9    System.out.println("Key: " + multipartUpload.getKey() + " UploadId: " + multipartUpload.getUploadId());
10}

注意:

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

获取所有已上传的块信息

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

Java
1ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, objectKey, uploadId);
2    
3// 获取上传的所有Part信息
4ListPartsResponse partListing = client.listParts(listPartsRequest);
5    
6// 遍历所有Part
7for (PartSummary part : partListing.getParts()) {
8    System.out.println("PartNumber: " + part.getPartNumber() + " ETag: " + part.getETag());
9}

如果需要查看Object的存储类型storage class使用以下代码:

Java
1public void listPartsStorageClass(){
2    ListResponse listPartsResponse = client.listParts(bucketName, key, uploadId);
3    String storageClass = listPartsResponse.getStorageClass();
4}

注意:

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

封装分块上传

在Java SDK中,Bos为用户提供了putSuperObjectFromFile接口,它对分块上传涉及到的initiateMultipartUpload、UploadPart、completeMultipartUpload三个方法进行封装,用户只需调用该接口即可完成分块上传,

Java
1File file = new File("/path/to/file.zip");
2PutSuperObjectRequest request = new PutSuperObjectRequest(bucketName, objectKey, file);
3bosClient.putSuperObjectFromFile(request);

其中PutSuperObjectRequest的参数有:

参数 说明
chunkSize 分块大小,默认为5MB,不能小于100KB
nThreads 分块上传中线程池中线程的数量,默认等于CPU的核数
isSuperObjectUploadCanced 是否取消分块上传
File 上传文件

若一个大文件耗时很长,用户想结束分块上传,可调用PutSuperObjectRequest中的cancel()方法设置isSuperObjectUploadCanced为true实现取消分块上传操作。

断点续传上传

当用户向BOS上传大文件时,如果网络不稳定或者遇到程序崩等情况,则整个上传就失败了,失败前已经上传的部分也作废,用户不得不重头再来。这样做不仅浪费资源,在网络不稳定的情况下,往往重试多次还是无法完成上传。 基于上述场景,BOS提供了断点续传上传的能力:

  • 当网络情况一般的情况下,建议使用三步上传方式,将object分为5Mb的块,参考分块上传。
  • 当您的网络情况非常差,推荐使用appendObject的方式进行断点续传,每次append 较小数据256kb,参考追加上传。

提示

  • 断点续传是分片上传的封装和加强,是用分片上传实现的;
  • 文件较大或网络环境较差时,推荐使用分片上传;

抓取上传

如下代码用于从指定URL抓取资源,并将资源存储到指定的Bucket中。此操作需要请求者对该Bucket有写权限,每次只能抓取一个Object,且用户可以自定义Object的名称,详情可参考FetchObject接口。

Java
1String fetchurl = "bj.bcebos.com/sourbucket/sourceobject";
2FetchObjectRequest req = new FetchObjectRequest(bucketname, objectname, fetchurl);
3bosClient.fetchObject(req);

获取上传进度

支持在上传过程中实时提供上传进度信息。目前支持PutObject, AppendObject, UploadPart以及PutSuperObjectFromFile四个接口。进度上传接口可以传入自定义数据,非必需。

Java SDK定义的上传进度回调接口如下,您可以在其中定义上传过程中您所需要的操作,如更新界面等等。

Java
1public interface ProgressCallback<T> {
2    void onProgress(long currentSize, long totalSize, T data);
3}
  • PutObject示例代码:
Java
1BosProgressCallback<Object> callback = new BosProgressCallback<Object>() {
2    @Override
3    public void onProgress(long currentSize, long totalSize, Object data) {
4        System.out.println("put " + currentSize + "/" + totalSize);
5    }
6};
7// 如果需要在onProgress使用自定义数据
8callback.setData(obj);
9PutObjectRequest request = new PutObjectRequest(bucketName, objectKey, file);
10request.setProgressCallback(callback);
11client.putObject(request);
  • AppendObject示例代码:
Java
1BosProgressCallback<Object> callback = new BosProgressCallback<Object>() {
2    @Override
3    public void onProgress(long currentSize, long totalSize, Object data) {
4        System.out.println("put " + currentSize + "/" + totalSize);
5    }
6};
7// 如果需要在onProgress使用自定义数据
8callback.setData(obj);
9AppendObjectRequest request = new AppendObjectRequest(bucketName, objectKey, file);
10request.setProgressCallback(callback);
11AppendObjectResponse response = client.appendObject(request);
12Long nextAppendOffset = response.getNextAppendOffset();
  • UploadPart示例代码:
Java
1BosProgressCallback<Object> callback = new BosProgressCallback<Object>() {
2    @Override
3    public void onProgress(long currentSize, long totalSize, Object data) {
4        System.out.println("put " + currentSize + "/" + totalSize);
5    }
6};
7// 如果需要在onProgress使用自定义数据
8callback.setData(obj);
9UploadPartRequest request = new UploadPartRequest();
10request.setBucketName(bucketName);
11request.setKey(objectKey);
12request.setUploadId(id);
13request.setInputStream(inputStream);
14request.setPartSize(size);
15request.setPartNumber(i);
16request.setProgressCallback(callback);
17client.uploadPart((request);
  • PutSuperObjectFromFile示例代码:
Java
1BosProgressCallback<Object> callback = new BosProgressCallback<Object>() {
2    @Override
3    public void onProgress(long currentSize, long totalSize, Object data) {
4        System.out.println("put " + currentSize + "/" + totalSize);
5    }
6};
7// 如果需要在onProgress使用自定义数据
8callback.setData(obj);
9PutSuperObjectRequest request = new PutSuperObjectRequest(bucketName, objectKey, file);
10request.setProgressCallback(callback);
11client.putSuperObjectFromFile(request);

下载文件

BOS Java SDK提供了丰富的文件下载接口,用户可以通过以下方式从BOS中下载文件:

  • 简单流式下载
  • 下载到本地文件
  • 断点续传下载
  • 范围下载
  • 下载进度条

完整示例代码请参考下载文件Demo

简单流式下载

用户可以通过如下代码将Object读取到一个流中:

Java
1public void getObject(BosClient client, String bucketName, String objectKey)
2    throws IOException {
3
4    // 获取Object,返回结果为BosObject对象
5    BosObject object = client.getObject(bucketName, objectKey);
6
7    // 获取ObjectMeta
8    ObjectMetadata meta = object.getObjectMetadata();
9
10    // 获取Object的输入流
11    InputStream objectContent = object.getObjectContent();
12
13    // 处理Object
14    ...
15
16    // 关闭流
17    objectContent.close();
18}

注意:

  1. BosObject中包含了Object的各种信息,包含Object所在的Bucket、Object的名称、MetaData以及一个输入流,用户可以通过操作输入流将Object的内容读取到文件或者内存中。
  2. ObjectMetadata中包含了Object上传时定义的ETag,Http Header以及自定义的元数据。
  3. 通过BosObject的getObjectContent方法,还可以获取返回Object的输入流,用户可以读取这个输入流来对Object的内容进行操作。

直接下载Object到文件

用户可以通过如下代码直接将Object下载到指定文件:

Java
1// 新建GetObjectRequest
2GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectKey);
3    
4// 下载Object到文件
5ObjectMetadata objectMetadata = client.getObject(getObjectRequest, new File("/path/to/file","filename"));

当使用上面方法将Object直接下载到文件时,方法返回ObjectMetadata对象。

范围下载

为了实现更多的功能,可以通过使用GetObjectRequest来指定下载范围,实现更精细化地获取Object。如果指定的下载范围是0 - 100,则返回第0到第100个字节的数据,包括第100个,共101字节的数据,即[0, 100]。

Java
1// 新建GetObjectRequest
2GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectKey);
3
4// 获取0~100字节范围内的数据
5getObjectRequest.setRange(0, 100);
6
7// 获取Object,返回结果为BosObject对象
8BosObject object = client.getObject(getObjectRequest);

通过getObjectRequest的setRange方法可以设置返回Object的范围。用户也可以用此功能实现文件的分段下载和断点续传。

下载图像处理后的文件

java sdk支持下载文件的同时进行图像处理。在请求种设置x-bce-process参数即可。具体参数使用参考图像处理。示例代码如下:

Java
1// 新建GetObjectRequest
2GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectKey);
3
4// 设置图像处理为缩放
5getObjectRequest.setxBceProcess("image/resize,m_fixed,w_200,h_100");
6
7// 获取Object,返回结果为处理后的BosObject对象
8BosObject object = client.getObject(getObjectRequest);

其他使用方法

获取Object的存储类型

Object的storage class属性分为STANDARD(标准存储), STANDARD_IA(低频存储)和COLD(冷存储),通过如下代码可以实现:

Java
1public void getObjectStorageClass(){
2    ObjectMetadata meta = client.getObjectMetadata(bucketName, key);
3    String storageClass = meta.getStorageClass();
4}

只获取ObjectMetadata

通过 getObjectMetadata 方法可以只获取ObjectMetadata而不获取Object的实体。如下代码所示:

Java
1ObjectMetadata objectMetadata = client.getObjectMetadata(bucketName, objectKey);

getObjectMetadata方法返回的解析类中可供调用的参数有:

参数 说明
contentType Object的类型
contentLength Object的大小
contentMd5 Object的MD5
etag Object的HTTP协议实体标签
storageClass Object的存储类型
userMetadata 如果在PutObject指定了userMetadata自定义meta,则返回此项
xBceCrc 如果在PutObject指定了object的CRC值(循环冗余校验码),则返回此项

取回归档存储类型文件

取回归档类型文件

用户上传归档文件后,归档文件是处于冰冻状态的,如果要下载归档文件,必须先取回归档存储文件。请求者必须有归档存储文件的读权限,并且归档存储文件处于冰冻状态。

取回归档文件,示例如下:

Java
1RestoreObjectRequest request = new RestoreObjectRequest(bucketName, objectKey);
2request.setRestoreDays(10);
3// 加急取回(RESTORE_TIER_EXPEDITED)、标准取回(RESTORE_TIER_STANDARD)、延缓取回(RESTORE_TIER_LOWCOST)
4request.setRestoreTier(RESTORE_TIER_EXPEDITED);
5client.restoreObject(request);
参数 类型 说明 是否必须
days int 表示解冻后状态的持续时间,要求是数字,单位是天,取值大于0且不超过30即可。默认解冻持续天数是7天,最长30天。 否
tier string 解冻优先级。可取值范围如下:
  • Expedited:加急取回,表示30min内完成取回。
  • Standard:标准取回,表示2~5小时内完成取回
  • LowCost:延缓取回,表示12小时内完成取回
否

变更文件存储等级

上文中已提到,BOS支持为文件赋予STANDARD(标准存储), STANDARD_IA(低频存储)和COLD(冷存储)三种存储类型。同时,BOS java SDK也支持用户对特定文件执行存储类型变更的操作。 涉及到的参数如下:

参数 说明
x-bce-storage-class 指定Object的存储类型,STANDARD_IA代表低频存储,COLD代表冷存储,不指定时默认是标准存储类型。

示例如下:

Java
1// 标准存储转为低频存储
2CopyObjectRequest copyObjectRequest = new CopyObjectRequest(srcBucketName, srcKey, destBucketName, destKey);
3copyObjectRequest.setStorageClass("STANDARD_IA");
4client.copyObject(copyObjectRequest);
5
6// 低频存储转为冷存储
7CopyObjectRequest copyObjectRequest = new CopyObjectRequest(srcBucketName, srcKey, destBucketName, destKey);
8copyObjectRequest.setStorageClass("COLD");
9client.copyObject(copyObjectRequest);

获取文件下载URL

用户可以通过如下代码获取指定Object的URL:

Java
1public String generatePresignedUrl(BosClient client, String bucketName, String objectKey, int expirationInSeconds) {
2
3   URL url = client.generatePresignedUrl(<bucketName>, <objectKey>, <expirationInSeconds>);
4   //指定用户需要获取的Object所在的Bucket名称、该Object名称、时间戳、URL的有效时长   
5
6    return url.toString();
7}

说明:

  • 用户在调用该函数前,需要手动设置endpoint为所属区域域名。百度智能云目前开放了多区域 支持,请参考区域选择说明。目前支持“华北-北京”、“华南-广州”和“华东-苏州”三个区域。北京区域:http://bj.bcebos.com,广州区域:http://gz.bcebos.com,苏州区域:http://su.bcebos.com。
  • expirationInSeconds为指定的URL有效时长,时间从当前时间算起,为可选参数,不配置时系统默认值为1800秒。如果要设置为永久不失效的时间,可以将expirationInSeconds参数设置为 -1,不可设置为其他负数。
  • 如果预期获取的文件时公共可读的,则对应URL链接可通过简单规则快速拼接获取: http://$bucketName.$region.bcebos.com/$objectKey或者http://$region.bcebos.com/$bucketName/$objectKey

列举存储空间中的文件

BOS SDK支持用户通过以下两种方式列举出object:

  • 简单列举
  • 通过参数复杂列举

除此之外,用户还可在列出文件的同时模拟文件夹,完整示例代码请参考列举文件Demo

简单列举

当用户希望简单快速列举出所需的文件时,可通过listObjects方法返回ListObjectsResponse对象,ListObjectsResponse对象包含了此次listObject请求的返回结果。用户可以通过ListObjectsResponse中的getContents方法获取所有Object的描述信息。

Java
1public void listObjects(BosClient client, String bucketName) {
2
3    // 获取指定Bucket下的所有Object信息
4    ListObjectsResponse listing = client.listObjects(bucketName);
5
6    // 遍历所有Object
7    for (BosObjectSummary objectSummary : listing.getContents()) {
8        System.out.println("ObjectKey: " + objectSummary.getKey());
9    }
10
11}

注意:

  1. 默认情况下,如果Bucket中的Object数量大于1000,则只会返回1000个Object,并且返回结果中IsTruncated值为True,并返回NextMarker做为下次读取的起点。
  2. 若想增大返回Object的数目,可以使用Marker参数分次读取。

通过参数复杂列举

除上述简单列举外,用户还可通过设置ListObjectsRequest的参数实现各种灵活的查询功能。ListObjectsRequest的可设置的参数如下:

参数 功能 使用方式
Prefix 限定返回的object key必须以prefix作为前缀 setPrefix(String prefix)
Delimiter 是一个用于对Object名字进行分组的字符所有名字包含指定的前缀且第一次出现。Delimiter字符之间的Object作为一组元素: CommonPrefixes setDelimiter(String delimiter)
Marker 设定结果从marker之后按字母排序的第一个开始返回 setMarker(String marker)
MaxKeys 限定此次返回object的最大数,最大为1000,默认值是1000。如果指定的值大于1000,按1000操作 setMaxKeys(int maxKeys)

注意:

  1. 如果有Object以Prefix命名,当仅使用Prefix查询时,返回的所有Key中仍会包含以Prefix命名的Object。
  2. 如果有Object以Prefix命名,当使用Prefix和Delimiter组合查询时,返回的所有Key中会有Null,Key的名字不包含Prefix前缀。

下面我们分别以几个案例说明通过参数列举的方法:

指定最大返回条数

Java
1// 指定最大返回条数为500
2ListObjectsRequest listObjectsRequest = new ListObjectsRequest("bucketName");
3listObjectsRequest.withMaxKeys(500);
4ListObjectsResponse listObjectsResponse = client.listObjects(listObjectsRequest);
5for(BosObjectSummary objectSummary :listObjectsResponse.getContents()) {
6    System.out.println("ObjectKey:" + objectSummary.getKey());
7}

返回指定前缀的object

Java
1// 指定返回前缀为test的object
2ListObjectsRequest listObjectsRequest = new ListObjectsRequest("bucketName");
3listObjectsRequest.withPrefix("test");
4ListObjectsResponse listObjectsResponse = client.listObjects(listObjectsRequest);
5for(BosObjectSummary objectSummary :listObjectsResponse.getContents()) {
6    System.out.println("ObjectKey:" + objectSummary.getKey());
7}

从指定Object后返回

Java
1// 用户可以定义不包括某object,从其之后开始返回
2ListObjectsRequest listObjectsRequest = new ListObjectsRequest("bucketName");
3listObjectsRequest.withMarker("object");
4ListObjectsResponse listObjectsResponse = client.listObjects(listObjectsRequest);
5for(BosObjectSummary objectSummary :listObjectsResponse.getContents()) {
6    System.out.println("ObjectKey:" + objectSummary.getKey());
7}

分页获取所有Object

Java
1// 用户可设置每页最多500条记录
2ListObjectsRequest listObjectsRequest = new ListObjectsRequest("bucketName");
3listObjectsRequest.withMaxKeys(500);
4ListObjectsResponse listObjectsResponse;
5boolean isTruncated = true;
6while (isTruncated) {
7    listObjectsResponse = client.listObjects(listObjectsRequest);
8    isTruncated = listObjectsResponse.isTruncated();
9    if (listObjectsResponse.getNextMarker() != null) {
10        listObjectsRequest.withMarker(listObjectsResponse.getNextMarker());
11    }
12}

分页获取所有特定Object后的结果

Java
1// 用户可设置每页最多500条记录,并从某特定object之后开始获取
2ListObjectsRequest listObjectsRequest = new ListObjectsRequest("bucketName");
3listObjectsRequest.withMaxKeys(500);
4listObjectsRequest.withMarker("object");
5ListObjectsResponse listObjectsResponse;
6boolean isTruncated = true;
7while (isTruncated) {
8    listObjectsResponse = client.listObjects(listObjectsRequest);
9    isTruncated = listObjectsResponse.isTruncated();
10    if (listObjectsResponse.getNextMarker() != null) {
11        listObjectsRequest.withMarker(listObjectsResponse.getNextMarker());
12    }
13}

分页获取所有指定前缀的Object结果

Java
1// 用户可设置分页获取指定前缀的Object,每页最多500条记录
2ListObjectsRequest listObjectsRequest = new ListObjectsRequest("bucketName");
3listObjectsRequest.withMaxKeys(500);
4listObjectsRequest.withPrefix("object");
5ListObjectsResponse listObjectsResponse;
6boolean isTruncated = true;
7while (isTruncated) {
8    listObjectsResponse = client.listObjects(listObjectsRequest);
9    isTruncated = listObjectsResponse.isTruncated();
10    if (listObjectsResponse.getNextMarker() != null) {
11        listObjectsRequest.withMarker(listObjectsResponse.getNextMarker());
12    }
13}

listObject方法返回的解析类中可供调用的参数有:

参数 说明
name Bucket名称
prefix 匹配以prefix开始到第一次出现Delimiter字符之间的object作为一组元素返回
marker 本次查询的起点
maxKeys 请求返回的最大数目
isTruncated 指明是否所有查询都返回了;false-本次已经返回所有结果,true-本次还没有返回所有结果
contents 返回的一个Object的容器
+key Object名称
+lastModified 此Object最后一次被修改的时间
+eTag Object的HTTP协议实体便签
+storageClass Object的存储形态
+size Object的内容的大小(字节数)
+owner Object对应Bucket所属用户信息
++id Bucket Owner的用户ID
++displayName Bucket Owner的名称

模拟文件夹功能

在BOS的存储结果中是没有文件夹这个概念的,所有元素都是以Object来存储,但BOS的用户在使用数据时往往需要以文件夹来管理文件。 因此,BOS提供了创建模拟文件夹的能力,其本质上来说是创建了一个size为0的Object。对于这个Object可以上传下载,只是控制台会对以”/“结尾的Object以文件夹的方式展示。

用户可以通过 Delimiter 和 Prefix 参数的配合模拟出文件夹功能。Delimiter 和 Prefix 的组合效果是这样的:

如果把 Prefix 设为某个文件夹名,就可以罗列以此 Prefix 开头的文件,即该文件夹下递归的所有的文件和子文件夹(目录)。文件名在Contents中显示。 如果再把 Delimiter 设置为 “/” 时,返回值就只罗列该文件夹下的文件和子文件夹(目录),该文件夹下的子文件名(目录)返回在 CommonPrefixes 部分,子文件夹下递归的文件和文件夹不被显示。

如下是几个应用方式:

列出Bucket内所有文件

当用户需要获取Bucket下的所有文件时,可以参考分页获取所有Object

递归列出目录下所有文件

可以通过设置 Prefix 参数来获取某个目录下所有的文件:

Java
1// 构造ListObjectsRequest请求
2ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
3    
4// 递归列出fun目录下的所有文件
5listObjectsRequest.setPrefix("fun/");
6    
7ListObjectsResponse listing = client.listObjects(listObjectsRequest);
8    
9// 遍历所有Object
10System.out.println("Objects:");
11for (BosObjectSummary objectSummary : listing.getContents()) {
12    System.out.println(objectSummary.getKey());
13	}
14}

输出:

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

查看目录下的文件和子目录

在 Prefix 和 Delimiter 结合的情况下,可以列出目录下的文件和子目录:

Java
1// 构造ListObjectsRequest请求
2ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
3    
4// "/" 为文件夹的分隔符
5listObjectsRequest.setDelimiter("/");
6    
7// 列出fun目录下的所有文件和文件夹
8listObjectsRequest.setPrefix("fun/");
9    
10ListObjectsResponse listing = client.listObjects(listObjectsRequest);
11    
12// 遍历所有Object
13System.out.println("Objects:");
14for (BosObjectSummary objectSummary : listing.getContents()) {
15    System.out.println(objectSummary.getKey());
16}
17    
18// 遍历所有CommonPrefix
19System.out.println("\nCommonPrefixs:");
20for (String commonPrefix : listing.getCommonPrefixes()) {
21    System.out.println(commonPrefix);
22}

输出:

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

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

列举Bucket中object的存储属性

当用户完成上传后,如果需要查看指定Bucket中的全部Object的storage class属性,可以通过如下代码实现:

Java
1public void listObjectsStorageClass(){
2    ListObjectsResponse listObjectResponse = client.listObjects("bucketName");
3    List<BosObjectSummary> objectList = listObjectResponse.getContents();
4    for(int i=0; i<objectList.length(); i++) {
5        System.out.println(objectList[i].getStorageClass());
6    }
7}

获取目录容量概览

用户可以通过如下代码获取Bucket或指定前缀下的当前容量、Object数、文件数。 此处文件的含义就是指普通的文件,不包括文件夹,更不包括分隔符逻辑意义上的目录。object就是实际存储在bucket的key数量。即文件数等于object数减去带分隔符结尾的object数,比如,当前目录下有9个object,其中5个是文件夹,4个文件,那么查到的文件数就是4,object数就是9。

Java
1public void stateSummary(BosClient client, String bucketName, String prefix) {
2
3    // 获取Bucket下的当前容量、Object数、文件数
4    StateSummaryResponse response = client.stateSummary(bucketName);
5    System.out.println("currSize : " + response.getTotalSize());
6    System.out.println("objectsCount : " + response.getObjectsCount());
7    System.out.println("filesCount : " + response.getFilesCount());
8
9}

获取带有指定前缀的object容量、Object数、文件数:

Java
1public StateSummaryResponse stateSummaryWithPrefix(BosClient client, String bucketName, String prefix) {
2
3    StateSummaryRequest request = new StateSummaryRequest();
4    request.setBucketName(this.bucketName);
5    request.setPrefix("dir/x");
6    StateSummaryResponse response = client.stateSummary(request);
7
8    return response;
9}

Object权限控制

设置Object的访问权限

目前BOS支持两种方式设置ACL。第一种是使用Canned Acl,在PutObjectAcl的时候,通过头域的"x-bce-acl"或者"x-bce-grant-permission'来设置object访问权限,当前可设置的权限包括private和public-read,两种类型的header不可以同时在一个请求中出现。第二种方式是上传一个ACL文件。

详细信息请参考设置Object权限控制,或查看Demo样例。

1、通过使用头域的"x-bce-acl"或者"x-bce-grant-permission'来设置object访问权限

  • set object acl 第一种方式(以请求头方式设置)
Java
1SetObjectAclRequest setObjectAclRequest = new SetObjectAclRequest("yourBucketName","objectKey",CannedAccessControlList.PublicRead);
2client.setObjectAcl(setObjectAclRequest);
  • set object acl 第一种方式(以请求头方式设置 xBceGrantRead)
Java
1String xBceGrantRead = "id=\"user_id1\""+",id=\"user_id2\"";
2SetObjectAclRequest setObjectAclRequest = new SetObjectAclRequest();
3setObjectAclRequest.withBucketName("yourBucketName");
4setObjectAclRequest.withKey("objectKey");
5setObjectAclRequest.setxBceGrantRead(xBceGrantRead);
6client.setObjectAcl(setObjectAclRequest);
  • set object acl 第一种方式(以请求头方式设置 xBceGrantFullControl)
Java
1String xBceGrantFullControl = "id=\"user_id1\""+",id=\"user_id2\"";
2SetObjectAclRequest setObjectAclRequest = new SetObjectAclRequest();
3setObjectAclRequest.withBucketName("yourBucketName");
4setObjectAclRequest.withKey("objectKey");
5setObjectAclRequest.setxBceGrantFullControl(xBceGrantFullControl);
6client.setObjectAcl(setObjectAclRequest);

2、通过setObjectAcl设置object访问权限

  • set object acl 第二种方式(json字符串)
Java
1String jsonObjectAcl = "{\"accessControlList\":["+ "{\"grantee\":[{\"id\":\"*\"}], "+ "\"permission\":[\"FULL_CONTROL\"]"+"}]}";
2
3SetObjectAclRequest setObjectAclRequest = new SetObjectAclRequest("yourBucketName","objectKey",jsonObjectAcl);
4
5client.setObjectAcl(setObjectAclRequest);
  • set object acl 第二种方式,用户只需指定指定参数即可
Java
1List<Grant> grants = new ArrayList<Grant>();
2List<Grantee> grantees = new ArrayList<Grantee>();
3List<Permission> permissions = new ArrayList<Permission>();
4
5// 授权给特定用户
6grantees.add(new Grantee("user_id1"));
7grantees.add(new Grantee("user_id2"));
8grantees.add(new Grantee("user_id3"));
9
10// 设置权限
11permissions.add(Permission.READ);
12grants.add(new Grant().withGrantee(grantees).withPermission(permissions));
13
14SetObjectAclRequest setObjectAclRequest = new SetObjectAclRequest("yourBucketName","objectKey", grants);
15client.setObjectAcl(setObjectAclRequest);

查看Object的权限

如下代码可以查Object的权限:

Java
1GetObjectAclRequest getObjectRequest = new GetObjectAclRequest();
2getObjectRequest.withBucketName("yourBucketName");
3getObjectRequest.withKey("objectKey");
4GetObjectAclResponse response = client.getObjectAcl(getObjectRequest);

getObjectAcl方法返回的解析类中可供调用的参数有:

参数 说明
accessControlList 标识Object的权限列表
grantee 标识被授权人
-id 被授权人ID
permission 标识被授权人的权限

删除Object的权限

如下代码可以删除Object的权限:

Java
1DeleteObjectAclRequest deleteObjectAclRequest = new DeleteObjectAclRequest("yourBucketName","objectKey");
2
3client.deleteObjectAcl(deleteObjectAclRequest);

删除文件

示例代码可以参考删除文件Demo

删除单个文件

可参考如下代码删除了一个Object:

Java
1public void deleteObject(BosClient client, String bucketName, String objectKey) {
2
3    // 删除Object
4    client.deleteObject(<bucketName>, <objectKey>);           //指定要删除的Object所在Bucket名称和该Object名称
5}

删除多个文件

删除多个文件

可参考如下两种方法删除多个Object:

Java
1// 1、以Json格式的字符串
2String jsonObjectKeys = "{\"objects\": ["+"{\"key\": \"token1.h\"},"+"{\"key\": \"token2.h\"}"+"]}";
3DeleteMultipleObjectsRequest request = new DeleteMultipleObjectsRequest();
4request.setBucketName("yourBucketName");
5request.setJsonDeleteObjects(jsonObjectKeys);
6client.deleteMultipleObjects(request);
Java
1// 2、用户只需指定指定参数即可
2List<String> objectKeys = new ArrayList<String>();
3objectKeys.add("object1");
4objectKeys.add("object2");
5DeleteMultipleObjectsRequest request = new DeleteMultipleObjectsRequest();
6request.setBucketName("yourBucketName");
7request.setObjectKeys(objectKeys);
8DeleteMultipleObjectsResponse response = client.deleteMultipleObjects(request);

支持一次请求内最多删除1000个Object。 消息体(body)不超过2M。 返回的消息体中只包含删除过程中出错的Object结果;如果所有Object都删除都成功的话,则没有消息体。

查看文件是否存在

用户可通过如下操作查看某文件是否存在:

Java
1// 存在返回true,不存在返回false,其他异常会被抛出
2bool exists = client.doesObjectExist("bucketName", "objectKey");

获取及更新文件元信息

文件元信息(Object Metadata),是对用户上传BOS的文件的属性描述,分为两种:HTTP标准属性(HTTP Headers)和User Meta(用户自定义元信息)。

获取文件元信息

参考只获取ObjectMetadata,或Demo

修改文件元信息

BOS修改Object的Metadata通过拷贝Object实现。即拷贝Object的时候,把目的Bucket设置为源Bucket,目的Object设置为源Object,并设置新的Metadata,通过拷贝自身实现修改Metadata的目的。如果不设置新的Metadata,则报错。

Java
1  public void setObjectMeta(BosClient client, String bucketName, String objectKey, ObjectMetadata newObjectMetadata) {
2        
3        CopyObjectRequest request = new CopyObjectRequest(bucketName, objectKey, bucketName, objectKey);
4
5        // 设置新的ObjectMetadata
6        request.setNewObjectMetadata(newObjectMetadata);
7
8        // 拷贝Object
9        CopyObjectResponse copyObjectResponse = client.copyObject(request);
10
11        // 打印结果
12        System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());
13    }

拷贝文件

示例代码可以参考拷贝文件Demo

拷贝一个文件

用户可以通过copyObject方法拷贝一个Object,如下代码所示:

Java
1public void copyObject(BosClient client, String srcBucketName, String srcKey, String destBucketName, String destKey) {
2    
3    // 拷贝Object
4    CopyObjectResponse copyObjectResponse = client.copyObject(srcBucketName, srcKey, destBucketName, destKey);
5    
6    // 打印结果
7    System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());
8}

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

通过CopyObjectRequest拷贝Object

用户也可以通过 CopyObjectRequest 实现Object的拷贝,如下代码所示:

Java
1// 初始化BosClient
2BosClient client = ...;
3    
4// 创建CopyObjectRequest对象
5CopyObjectRequest copyObjectRequest = new CopyObjectRequest(srcBucketName, srcKey, destBucketName, destKey);
6    
7// 设置新的Metadata
8Map<String, String> userMetadata = new HashMap<String, String>();
9userMetadata.put('<user-meta-key>','<user-meta-value>');
10ObjectMetadata meta = new ObjectMetadata();
11meta.setUserMetadata(userMetadata);
12copyObjectRequest.setNewObjectMetadata(meta);
13    
14// 复制Object
15CopyObjectResponse copyObjectResponse = client.copyObject(copyObjectRequest);
16    
17System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());

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

设置Object的Copy属性

BOS同时会提供CopyObject接口用于将一个已经存在的Object拷贝到另外一个Object,拷贝过程中会对源Object的Etag或修改状态进行判断,根据判断结果决定是否执行拷贝。详细的参数解释如下:

名称 类型 描述 是否必需
x-bce-copy-source-if-match String 如果源Object的ETag值和用户提供的ETag相等,则执行拷贝操作,否则拷贝失败。 否
x-bce-copy-source-if-none-match String 如果源Object的ETag和用户提供的ETag不相等,则执行拷贝操作,否则拷贝失败。 否
x-bce-copy-source-if-unmodified-since String 如果源object在x-bce-copy-source-if-unmodified-since之后没被修改,则执行拷贝操作,否则拷贝失败。 否
x-bce-copy-source-if-modified-since String 如果源object在x-bce-copy-source-if-modified-since之后被修改了,则执行拷贝操作,否则拷贝失败。 否

对应的示例代码:

Java
1// 初始化BosClient
2BosClient client = ...;
3
4// 创建CopyObjectRequest对象
5CopyObjectRequest copyObjectRequest = new CopyObjectRequest(srcBucketName, srcKey, destBucketName, destKey);
6
7// 设置新的Metadata
8Map<String, String> userMetadata = new HashMap<String, String>();
9userMetadata.put("<user-meta-key>","<user-meta-value>");
10        
11meta.setUserMetadata(userMetadata);
12copyObjectRequest.setNewObjectMetadata(meta);
13
14//copy-source-if-match
15copyObjectRequest.withETag("111111111183bf192b57a4afc76fa632");
16//copy-source-if-none-match
17copyObjectRequest.withNoMatchingETagConstraint("111111111183bf192b57a4afc76fa632");
18        
19Date modifiedSinceConstraint = new Date();    
20SimpleDateFormat df = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.UK);  
21df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));        
22String date = df.format(modifiedSinceConstraint);
23
24//copy-source-if-modified-since
25copyObjectRequest.withModifiedSinceConstraint(date);
26
27//copy-source-if-unmodified-since
28copyObjectRequest.withUnmodifiedSinceConstraint(date);
29
30// 复制Object
31CopyObjectResponse copyObjectResponse = client.copyObject(copyObjectRequest);
32
33System.out.println("ETag: " + copyObjectResponse.getETag() + " LastModified: " + copyObjectResponse.getLastModified());

同步Copy功能

当前BOS的CopyObject接口是通过同步方式实现的。同步方式下,BOS端会等待Copy实际完成才返回成功。同步Copy能帮助用户更准确的判断Copy状态,但用户感知的复制时间会变长,且复制时间和文件大小成正比。

同步Copy方式更符合业界常规,提升了与其它平台的兼容性。同步Copy方式还简化了BOS服务端的业务逻辑,提高了服务效率。

如果您使用bce-java-sdk-0.10.8版本之前的SDK,有可能会出现复制请求成功,但文件实际复制失败的情况,所以建议您使用最新版本SDK。

分块拷贝

除了通过CopyObject接⼝拷贝文件以外,BOS还提供了另外一种拷贝模式——Multipart Upload Copy。用户可以在如下的应用场景内(但不仅限于此),使用Multipart Upload Copy,如:

  • 需要支持断点拷贝。
  • 拷贝超过5GB大小的文件。
  • 网络条件较差,和BOS的服务器之间的连接经常断开。

下面将介绍分步实现三步拷贝。

三步拷贝包含init、“拷贝分块”和complete三步,其中init和complete的操作同分块上传一致。

为了便于理解,下面提供三步拷贝完整代码:

Java
1// 第一步 init
2InitiateMultipartUploadRequest initiateMultipartUploadRequest =
3        new InitiateMultipartUploadRequest("targetBucketName","targetObjectName");
4InitiateMultipartUploadResponse initiateMultipartUploadResponse =
5        client.initiateMultipartUpload(initiateMultipartUploadRequest);
6
7// 第二步 分块拷贝
8long left_size=client.getObjectMetadata("sourceBucketName","sourceObjectName").getContentLength();
9long skipBytes = 0;
10int partNumber = 1;
11List<PartETag> partETags = new ArrayList<PartETag>();
12
13while (left_size > 0) {
14    long partSize = 1024 * 1024 * 1L;
15    if (left_size < partSize) {
16        partSize = left_size;
17    }
18    UploadPartCopyRequest uploadPartCopyRequest = new UploadPartCopyRequest();
19    uploadPartCopyRequest.setBucketName("targetBucketName");
20    uploadPartCopyRequest.setKey("targetObjectName");
21    uploadPartCopyRequest.setSourceBucketName("sourceBucketName");
22    uploadPartCopyRequest.setSourceKey("sourceObjectName");
23    uploadPartCopyRequest.setUploadId(initiateMultipartUploadResponse.getUploadId());
24    uploadPartCopyRequest.setPartSize(partSize);
25    uploadPartCopyRequest.setOffSet(skipBytes);
26    uploadPartCopyRequest.setPartNumber(partNumber);
27    UploadPartCopyResponse uploadPartCopyResponse = client.uploadPartCopy(uploadPartCopyRequest);
28    // 将返回的PartETag保存到List中
29    PartETag partETag = new PartETag(partNumber,uploadPartCopyResponse.getETag());
30    partETags.add(partETag);
31    left_size -= partSize;
32    skipBytes += partSize;
33    partNumber+=1;
34}
35
36// 第三步 complete
37CompleteMultipartUploadRequest completeMultipartUploadRequest =
38        new CompleteMultipartUploadRequest("targetBucketName", "targetObjectName", initiateMultipartUploadResponse.getUploadId(), partETags);
39CompleteMultipartUploadResponse completeMultipartUploadResponse =
40        client.completeMultipartUpload(completeMultipartUploadRequest);

注意:

  1. offset参数以字节为单位,为分块的开始偏移位置。
  2. size参数以字节为单位,定义每个分块的大小,除最后一个Part以外,其他的Part大小都要大于 5MB。

选取文件

BOS Java SDK提供了SelectObject接口,用于向Bucket中指定object执行SQL语句,选取出指定内容返回,请参考选取Object。目前支持object类型为CSV(包括TSV等类CSV文件)和JSON文件:

示例代码可以参考选取文件Demo

  • 选取CSV文件
  • 选取JSON文件

选取CSV文件

Java SDK选取CSV文件请参考以下代码:

Java
1final String csvContent = "header1,header2,header3\r\n" +
2                          "1,2,3.4\r\n" +
3                          "a,b,c\r\n" +
4                          "\"d\",\"e\",\"f\"\r\n" +
5                          "true,false,true\r\n" +
6                          "2006-01-02 15:04:06,2006-01-02 16:04:06,2006-01-02 17:04:06";
7client.putObject("bucketName", "test-csv", new ByteArrayInputStream(csvContent.getBytes()));
8
9SelectObjectRequest request = new SelectObjectRequest("bucketName", "test-csv")
10        .withSelectType("csv")                                   
11        .withExpression("select * from BosObject limit 3")
12        .withInputSerialization(new InputSerialization()
13                .withCompressionType("NONE")
14                .withFileHeaderInfo("NONE")
15                .withRecordDelimiter("\r\n")
16                .withFieldDelimiter(",")
17                .withQuoteCharacter("\"")
18                .withCommentCharacter("#"))
19        .withOutputSerialization(new OutputSerialization()
20                .withOutputHeader(false)
21                .withQuoteFields("ALWAYS")
22                .withRecordDelimiter("\n")
23                .withFieldDelimiter(",")
24                .withQuoteCharacter("\""))
25        .withRequestProgress(false);
26SelectObjectResponse response = client.selectObject(request);
27
28// 输出返回的记录
29SelectObjectResponse.Messages messages = response.getMessages();
30while (messages.hasNext()) {
31    SelectObjectResponse.CommonMessage message = messages.next();
32    if (message.Type.equals("Records")) {
33        for (String record: message.getRecords()) {
34            System.out.println(record);
35        }
36    }
37}

选取CSV文件输出的结果:

Java
1"header1","header2","header3"
2"1","2","3.4"
3"a","b","c"

注意:

  • Unix/Linux系统里,每行结尾只有"<换行>",即"\n";
  • Windows系统里面,每行结尾是"<回车><换行>",即"\r\n";
  • Mac系统里,每行结尾是"<换行>",即"\n",只有 v9 之前 Mac OS 才是用 '\r'。
  • 根据文件内容,设置合适的recordDelimiter。

选取JSON文件

Java SDK选取JSON文件请参考以下代码:

Java
1final String jsonContent = "{\n" +
2        "\t\"name\": \"Smith\",\n" +
3        "\t\"age\": 16,\n" +
4        "\t\"org\": null\n" +
5        "}\n" +
6        "{\n" +
7        "\t\"name\": \"charles\",\n" +
8        "\t\"age\": 27,\n" +
9        "\t\"org\": \"baidu\"\n" +
10        "}\n" +
11        "{\n" +
12        "\t\"name\": \"jack\",\n" +
13        "\t\"age\": 35,\n" +
14        "\t\"org\": \"bos\"\n" +
15        "}";
16client.putObject("bucketName", "test-json", new ByteArrayInputStream(jsonContent.getBytes()));
17
18SelectObjectRequest request = new SelectObjectRequest("bucketName", "test-json")
19        .withSelectType("json")
20        .withExpression("select * from BosObject where age > 20")
21        .withInputSerialization(new InputSerialization()
22                .withCompressionType("NONE")
23                .withJsonType("LINES"))
24        .withOutputSerialization(new OutputSerialization()
25                .withRecordDelimiter("\n"))
26        .withRequestProgress(false);
27SelectObjectResponse response = client.selectObject(request);
28
29// 输出返回的记录
30SelectObjectResponse.Messages messages = response.getMessages();
31while (messages.hasNext()) {
32    SelectObjectResponse.CommonMessage message = messages.next();
33    if (message.Type.equals("Records")) {
34        for (String record: message.getRecords()) {
35            System.out.println(record);
36        }
37    }
38}

选取JSON文件输出的结果:

Java
1{"name":"charles","age":27,"org":"baidu"}
2{"name":"jack","age":35,"org":"bos"}

注意,对于CSV和JSON文件查询时,两者初始化SelectObjectRequest的参数有很大不同,详细参数设置请参考SelectObject接口。

上一篇
安装SDK工具包
下一篇
概述