上传流程

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

  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

客户端七牛方式上传文件相关推荐

  1. java上传文件到七牛_java 上传文件到七牛云

    com.qiniu qiniu-java-sdk dependency> //java上传流文件,二进制流文件 //java 七牛上传 @RequestMapping("/file&q ...

  2. 七牛 - 网络资源上传文件

    node 环境下使用七牛云服务器 npm i qiniu -D 创建各种上传凭证之前,我们需要定义好其中鉴权对象 var accessKey = "xxxxxxxxx"; //填入 ...

  3. php七牛分片上传_七牛视频切片方案 - 张小超fly的个人空间 - OSCHINA - 中文开源技术交流社区...

    使用七牛 sdk 上传视频并做分片操作. step1 生成 token const qiniu = require("qiniu"); var accessKey = proc.e ...

  4. android 队列上传图片,话说android端七牛图片上传

    七牛图片上传业务流程如下图(这是官方的图): 由上图可知,要想实现图片上传,是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行) 接下来步骤如下: 1.首先肯定是要有一个七牛的账号,并创 ...

  5. 话说android端七牛图片上传

    七牛图片上传业务流程如下图(这是官方的图): 由上图可知,要想实现图片上传,是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行) 接下来步骤如下: 1.首先肯定是要有一个七牛的账号,并创 ...

  6. 转:vc中如何通过http的post方式上传文件

    文章引自:http://blog.myspace.cn/e/404248359.htm vc中如何通过http的post方式上传文件 HTTP响应     在接收和解释请求消息后,服务器会返回一个HT ...

  7. ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

    ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...

  8. 七牛图片上传的使用心得[PHP篇]

    曾写过一篇文章随便写了写我怎么用七牛的,发现很多小伙伴来问我,这回写个详细的. 前提: 1.已经有七牛账号,创建了空间,能看到AccessKey/SecretKey: 2.你知道怎么用composer ...

  9. jquery ajax java上传文件_jQuery Ajax方式上传文件的方法

    jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这 ...

  10. java序列化表单同步请求_Ajax serialize() 表单进行序列化方式上传文件

    通过传统的 form 表单提交的方式上传文件 上传文件: 不过传统的 form 表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用 Ajax 的方式进行请求的. 使用 ...

最新文章

  1. 一文详解脑科学研究与产业发展方向
  2. C Primer Plus 第7章 C控制语句:分支和跳转 7.1 if语句
  3. 高速串行总线系列(5)总线的各种基础问题
  4. Mesos源码分析(8): Mesos-Slave的初始化
  5. maya 中使用节点连接来求余数:
  6. jquery datatable设置垂直滚动后,表头(th)错位问题
  7. 【OpenCV 例程200篇】03. 图像的显示(cv2.imshow)
  8. 蓝桥杯试题:矩阵翻硬币
  9. Unity3D基础4:空物体与预制体
  10. @SuppressWarnings注解的详解
  11. (十四)洞悉linux下的Netfilteriptables:开发一个match模块【实战】
  12. ubuntu播放文件需要MPEG-4 AAC解码器
  13. 获取CPUID序列号的两种办法
  14. 网上购物系统的设计与实现
  15. 深入理解DRM(二)——了解Widevine与OEMCrypto
  16. mbit职业测试软件,MBTI职业性格测试(最新免费版)
  17. AI人工智能技术在车载监控系统中有哪些应用?
  18. 均匀传输线插入损耗分析
  19. 用友携YonSuite亮相云栖大会,全方位生态合作再提速
  20. html5学习系列之klm类标签

热门文章

  1. CnOpenData中国上市公司公告数据简介
  2. 《系统与网络管理实践》(第三版)作者访谈
  3. Dev cpp 手动开栈
  4. 1034 Head of a Gang
  5. 新闻资讯APP——Resultpage.vue组件
  6. 《简约至上:交互设计四策略》导读
  7. Perl的CPAN和CPANPLUS安装模块介绍
  8. 推荐:三少的新书 - 阴阳冕
  9. 海洋cms index.php被修改,海洋CMS(SEACMS)新版本V6.55补丁仍可被绕过执行任意代码...
  10. python xlsx转xls_Python将xls转换成xlsx