客户端七牛方式上传文件

 

上传流程

在七牛云存储中,整个上传流程大致分为以下几步:

  1. 业务服务器颁发上传凭证给客户端(终端用户)

  2. 客户端凭借上传凭证上传文件到七牛

  3. 在七牛获得完整数据后,发起一个 HTTP 请求回调到业务服务器

  4. 业务服务器保存相关信息,并返回一些信息给七牛

  5. 七牛原封不动地将这些信息转发给客户端(终端用户)

 

注意:回调到业务服务器的过程是可选的,它取决于业务服务器颁发的上传凭证。如果没有回调,七牛会返回一些标准的信息(例如文件的 hash)给客户端。

如果上传不回调给服务器,以上流程简化为:

  1. 业务服务器生成上传凭证

  2. 凭借上传凭证上传文件到七牛

  3. 后续工作,例如保存一些相关信息

 

代码

Qiniu_Io_PutFile 用于普通上传,Qiniu_Rio_PutFile 断点续上传,如果服务器的token有回调,则Qiniu_Rio_PutRet的key为空,如果服务器的token没有回调,则key不为空,是上传地址的标识,然后文件的地址格式大概是 http://qiniu.服务器地址/key,这样可以访问到上传的文件。

Qiniu_Global_Init(-1);     /* 全局初始化函数,整个进程只需要调用一次 */
// 参数:文件路径,服务器提供的token,及用于返回key的引用
int upload(QString localFilePath,QString token,QString& key)
{

    Qiniu_Client* client = new Qiniu_Client;
    if(client)
    {
        /* HTTP客户端初始化。HTTP客户端是线程不安全的,不要在多个线程间共用 */
        Qiniu_Client_InitNoAuth(client, 1024); 

    }

    Qiniu_Error err;
    Qiniu_Rio_PutExtra extra;
    Qiniu_Zero(extra);
    Qiniu_Rio_PutRet putRet;

    err = Qiniu_Rio_PutFile(m_Client,
                            &putRet,
                            qPrintable(token),
                            NULL,
                            qPrintable(localFilePath),
                            &extra);
//    Qiniu_Io_PutRet putRet;
//    err = Qiniu_Io_PutFile(m_Client,
//                           &putRet,
//                           qPrintable(token),
//                           NULL,
//                           qPrintable(localFilePath),
//                           NULL);
    qInfo("hash and key %s %s",putRet.hash,putRet.key);
    if(err.code != 200)
    {
        qInfo("qiniu upload fail:[%d]%s",err.code,err.message);
        if(err.code==0) return -1;
        return err.code;
    }
    else
    {
        if(putRet.key != "")
        {
            key = putRet.key;
        }
    }
    return 0;
}

上传地址错误

如果提示上传地址出错,比如 incorrect region, please use up-z2.qiniup.com

需要在conf.c文件更更换默认的地址(可能还需要更新sdk),此地址是对应服务器的所选择的七牛的存储服务器,例如:

//默认华东机房

const char *QINIU_UP_HOST = "http://upload-z2.qiniu.com";

const char *QINIU_IOVIP_HOST = "http://iovip-z2.qbox.me";

代码参考:

https://github.com/fengxieye/Qt-item/blob/master/GCUpload/GCQiniuUpload.cpp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值