qiniuStorage

来自于:开发者立即使用

概述

产品简介

对象存储服务是一个基于对象的海量存储服务,是七牛云自主研发的能够为用户提供高可靠、强安全、低成本、可扩展的对象存储能力,包括创建、修改、删除存储空间,上传、下载、删除对象等等,从而满足多样化的非结构化数据存储需求。用户只需按照实际使用的存储量付费。

七牛云提供的对象存储服务是一项面向Internet访问的服务,提供了基于HTTP/HTTPS协议的Web服务接口,用户可以通过七牛云控制台或客户端访问和管理存储在对象存储中的数据。此外,七牛云对象存储服务兼容Amazon S3接口,用户可以通过调用对象存储服务REST API接口、多语言的SDK(Objective-C、Java、PHP、Python、Ruby、Node.js、C#、C/C++、Go和JavaScript)开发工具包开发上层适配应用软件,或对接Amazon S3存储,从而可以使用户聚焦业务应用,而无需关注底层存储实现技术。

七牛云对象存储服务已经实现多地域部署基础设施,具备高度的可扩展性和可靠性,用户可根据自身需要指定地域使用对象存储服务,由此获得更快的访问速度和实惠的服务价格。

七牛云的对象存储服务分为标准存储与低频存储两类,标准存储适用于频繁访问的数据,拥有较低的延迟和较高的吞吐量性能;而低频存储适用于不频繁访问但在需要时也要求快速访问的数据,拥有与标准存储相同的较低延迟及高吞吐量性能。

基本概念

标准存储 低频存储 资源 空间 开发者和用户 键值对 存储区域 访问密钥 (AK/SK)

以上概念解释参考七牛官方文档------基本概念

快速入门

欢迎查看上传您的资源到七牛云存储文档。您可以在任意时间地点使用七牛云存储,通过 web 上传和下载任何资源。通过完成本快速入门指南中的步骤,您将成功创建新的空间,可以上传、下载和删除文件。

在使用七牛对象存储之前,您需要了解几个基本概念。七牛对象存储将数据文件以资源的形式上传到空间中。您可以创建一个或者多个空间,然后向每个空间中上传一个或多个文件。您可以通过获取已上传文件的地址进行文件的分享和下载。您还可以通过修改存储空间或文件的属性或元信息来设置相应的访问权限。更多关于七牛对象存储的详细基本概念,请查阅 基本概念介绍。快速入门接下来将假设您至少已经熟悉基本概念介绍里的内容。

为了顺利完成快速入门,您需要一个七牛云账号。如果您还没有七牛云账号,请通过 七牛官方文档之快速入门 创建七牛云账号。本快速入门指南涵盖以下内容:

Step 1:创建空间 Step 2:上传文件 Step 3:下载文件 Step 4:删除文件 Step 5:删除空间

关于七牛云对象存储,请参阅 对象存储 文档。

访问域名和存储区域

访问域名和存储区域参考 七牛官方文档

访问域名和存储区域

以保护数据安全和考虑架构合理性为出发点,我们对基于七牛云存储服务如何进行开发提供了一些设计和编码建议。希望开发者在使用七牛云存储服务之前详细阅读这些建议,并尽可能的符合这些原则,以免造成不必要的时间浪费和带来数据安全风险。

基本结构 业务流程 关键原则

以上内容,参考七牛官方文档之 编程模型

安全机制

数据安全性是云存储服务的重中之重。云存储的安全机制主要需要考虑以下几个因素:

  • 如何判断该请求方是否合法,且对目标空间有相应的访问权限。
  • 因为服务的访问协议同时支持 HTTP 和 HTTPS,服务端需要判断收到的请求是否经过篡改。
  • 相比上传新资源,覆盖文件或删除已有资源拥有更高的风险。因此对上传或修改动作,需要确认请求方是否拥有修改或删除的权限。

在使用七牛云存储服务的过程中,需要考虑安全机制的场景主要有如下几种:

  • 上传资源
  • 访问资源
  • 管理和修改资源

详情参考七牛官方文档之 安全机制

模块概述

本模块封装了 Objective-C SDK(iOS 客户端 SDK),没有包含 token 生成实现,为了安全,token 都建议通过网络从服务端获取,具体生成代码可以参考七牛服务端官方 SDK。支持 Mac 和 iOS,会根据文件大小自动选择表单上传还是断点续上传。

configUploader

配置文件上传参数

configUploader({params})

params

mimeType:

  • 类型:字符串
  • 描述:(可选项)为上传文件设置一个自定义的 MIME 类型,如果为空,那么服务端自动检测文件的 MIME 类型

checkCrc:

  • 类型:布尔
  • 描述:(可选项)为 false 时,服务端不会校验 crc32 值,checkCrc 为 YES 时,服务端会计算上传文件的 crc32 值,然后与用户提供的 crc32 参数值比较确认文件的完整性,如果校验失败会返回 406 错误。
  • 默认:false

params:

  • 类型:JSON 对象
  • 描述:(可选项)用户自定义参数,必须以 x: 开头,这些参数可以作为变量用于 upToken 的 callbackBody、returnBody、asyncOps 参数中
  • 举例:
{
    @"x:foo":@"fooval"
}

示例代码

var qiniuStorage = api.require("qiniuStorage");
qiniuSstorage.configUploader({
    params:{"x:foo":"fooval"},
    checkCrc: false,
    mimeType: ''
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

start

开始上传文件

注意:

key 及所有需要输入的字符串必须采用 utf8 编码,如果使用非 utf8 编码访问七牛云存储将反馈错误。

start({params}, callback(ret))

params

token:

  • 类型:字符串
  • 描述:从服务器端 SDK 获取的 token

path:

  • 类型:字符串
  • 描述:上传的文件(图片、视频等)的路径,要求本地路径(fs://、widget://)

key:

  • 类型:字符串
  • 描述:(可选项)上传到云存储的key(文件名),不传时表示是由七牛生成
  • 注意:每次上传要用不同的文件名,避免文件名有冲突上传失败

示例代码

var qiniuStorage = api.require("qiniuStorage");
qiniuSstorage.start({
    token:'',
    path: '',
    key: ''
});

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

cancel

停止、取消上传文件

start()

示例代码

var qiniuStorage = api.require("qiniuStorage");
qiniuSstorage.cancel();

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本

addEventListener

添加上传进度的监听

addEventListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: 'complete' ,   //字符串类型;交互事件类型,取值范围如下:
                              //complete:完成
                              //uploading:正在上传进度
    info: {                   //JSON对象;上传完成后的信息,仅当 eventType 为 complete 时有值
        statusCode: ,         //数字类型;状态码
        reqId: '',            //字符串类型;七牛服务器生成的请求ID,用来跟踪请求信息,如果使用过程中出现问题,请反馈此ID
        xlog: '',             //字符串类型;七牛服务器内部跟踪记录
        xvia: '',             //字符串类型;cdn服务器内部跟踪记录
        host: '',             //字符串类型;服务器域名
        serverIp: '',         //字符串类型;服务器 IP
        duration: '',         //数字类型;请求消耗的时间,单位 秒
        id: '',               //字符串类型;客户端id
        timeStamp: '',        //字符串类型;时间戳
        canceled: '',         //布尔类型;是否取消
        ok: '',               //布尔类型;成功的请求
        broken: '',           //布尔类型;是否网络错误
        notQiniu: '',         //布尔类型;是否为 七牛响应
        error: {              //JSON 类型;错误信息
            code: ,           //数字类型;错误码
            domain: ''        //字符串类型;错误信息
        }
    },
    key: '' ,                 //字符串类型;返回的文件名
    percent: 21               //数字类型;上传进度百分比,仅当 eventType 为 uploading 时有值         
}

示例代码

    var qiniuStorage = api.require("qiniuStorage");
    qiniuSstorage.addEventListener(function(ret){
        api.alert({msg:JSON.stringify(ret)});
    });

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本