客户端七牛方式上传文件
上传流程
在七牛云存储中,整个上传流程大致分为以下几步:
业务服务器颁发上传凭证给客户端(终端用户)
客户端凭借上传凭证上传文件到七牛
在七牛获得完整数据后,发起一个 HTTP 请求回调到业务服务器
业务服务器保存相关信息,并返回一些信息给七牛
七牛原封不动地将这些信息转发给客户端(终端用户)
注意:回调到业务服务器的过程是可选的,它取决于业务服务器颁发的上传凭证。如果没有回调,七牛会返回一些标准的信息(例如文件的 hash)给客户端。
如果上传不回调给服务器,以上流程简化为:
业务服务器生成上传凭证
凭借上传凭证上传文件到七牛
后续工作,例如保存一些相关信息
代码
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
客户端七牛方式上传文件相关推荐
- java上传文件到七牛_java 上传文件到七牛云
com.qiniu qiniu-java-sdk dependency> //java上传流文件,二进制流文件 //java 七牛上传 @RequestMapping("/file&q ...
- 七牛 - 网络资源上传文件
node 环境下使用七牛云服务器 npm i qiniu -D 创建各种上传凭证之前,我们需要定义好其中鉴权对象 var accessKey = "xxxxxxxxx"; //填入 ...
- php七牛分片上传_七牛视频切片方案 - 张小超fly的个人空间 - OSCHINA - 中文开源技术交流社区...
使用七牛 sdk 上传视频并做分片操作. step1 生成 token const qiniu = require("qiniu"); var accessKey = proc.e ...
- android 队列上传图片,话说android端七牛图片上传
七牛图片上传业务流程如下图(这是官方的图): 由上图可知,要想实现图片上传,是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行) 接下来步骤如下: 1.首先肯定是要有一个七牛的账号,并创 ...
- 话说android端七牛图片上传
七牛图片上传业务流程如下图(这是官方的图): 由上图可知,要想实现图片上传,是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行) 接下来步骤如下: 1.首先肯定是要有一个七牛的账号,并创 ...
- 转:vc中如何通过http的post方式上传文件
文章引自:http://blog.myspace.cn/e/404248359.htm vc中如何通过http的post方式上传文件 HTTP响应 在接收和解释请求消息后,服务器会返回一个HT ...
- ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)
ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...
- 七牛图片上传的使用心得[PHP篇]
曾写过一篇文章随便写了写我怎么用七牛的,发现很多小伙伴来问我,这回写个详细的. 前提: 1.已经有七牛账号,创建了空间,能看到AccessKey/SecretKey: 2.你知道怎么用composer ...
- jquery ajax java上传文件_jQuery Ajax方式上传文件的方法
jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这 ...
- java序列化表单同步请求_Ajax serialize() 表单进行序列化方式上传文件
通过传统的 form 表单提交的方式上传文件 上传文件: 不过传统的 form 表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用 Ajax 的方式进行请求的. 使用 ...
最新文章
- 一文详解脑科学研究与产业发展方向
- C Primer Plus 第7章 C控制语句:分支和跳转 7.1 if语句
- 高速串行总线系列(5)总线的各种基础问题
- Mesos源码分析(8): Mesos-Slave的初始化
- maya 中使用节点连接来求余数:
- jquery datatable设置垂直滚动后,表头(th)错位问题
- 【OpenCV 例程200篇】03. 图像的显示(cv2.imshow)
- 蓝桥杯试题:矩阵翻硬币
- Unity3D基础4:空物体与预制体
- @SuppressWarnings注解的详解
- (十四)洞悉linux下的Netfilteriptables:开发一个match模块【实战】
- ubuntu播放文件需要MPEG-4 AAC解码器
- 获取CPUID序列号的两种办法
- 网上购物系统的设计与实现
- 深入理解DRM(二)——了解Widevine与OEMCrypto
- mbit职业测试软件,MBTI职业性格测试(最新免费版)
- AI人工智能技术在车载监控系统中有哪些应用?
- 均匀传输线插入损耗分析
- 用友携YonSuite亮相云栖大会,全方位生态合作再提速
- html5学习系列之klm类标签
热门文章
- CnOpenData中国上市公司公告数据简介
- 《系统与网络管理实践》(第三版)作者访谈
- Dev cpp 手动开栈
- 1034 Head of a Gang
- 新闻资讯APP——Resultpage.vue组件
- 《简约至上:交互设计四策略》导读
- Perl的CPAN和CPANPLUS安装模块介绍
- 推荐:三少的新书 - 阴阳冕
- 海洋cms index.php被修改,海洋CMS(SEACMS)新版本V6.55补丁仍可被绕过执行任意代码...
- python xlsx转xls_Python将xls转换成xlsx