前言

做app不得不谈的问题就是文件上传。用hbuilder开发app让上传变的非常easy。

Uploader

Uploader模块管理网络上传任务,用于从本地上传各种文件到server,并支持跨域訪问操作。

通过plus.uploader可获取上传管理对象。

Uploader上传使用HTTP的POST方式提交数据,数据格式符合Multipart/form-data规范。即rfc1867(Form-based File Upload in HTML)协议。

很多其它内容:Uploader

代码

qiao.h.upload = function(options){
if(!options) return; var url = options.url;
var filepath = options.filepath;
var datas = options.datas || [];
var success = options.success;
var fail = options.fail;
if(url && filepath){
var task = plus.uploader.createUpload(url, {
method: "POST",
blocksize: 204800,
priority: 100
},
function(t, status){
if(status == 200){
if(success) success(t);
}else{
if(fail) fail(status);
}
}
);
task.addFile(filepath, {key: 'file'});
if(datas && datas.length){
for(var i=0; i<datas.length; i++){
var data = datas[i];
task.addData(data.key, data.value);
}
}
task.start();
}
};

对uploader的上传做了封装,

能够看到其核心是一个createUpload方法,创建一个Uploader对象,

创建这个对象的时候,会写好成功和失败的回调函数。

创建成功后为这个upload对象加入数据。包含要上传的文件和其它数据,

最后运行start方法開始上传。

识岁

在本zpp中。当用户选择相片或者拍照生成相片后。仅仅要点击“開始识别”button,就会运行上传操作,

代码例如以下:

// uploadImg
var url,tsrc;
function uploadImg(){
var src = $('#faceImg').attr('src');
if(src){
beginw(); if(tsrc && tsrc == src && url){
facepp();
}else{
tsrc = src;
var token = qiao.qiniu.uptoken(src);
var filename = qiao.qiniu.file;
qiao.h.upload({
url: 'http://upload.qiniu.com/',
filepath: src,
datas: [
{key: 'key', value : filename},
{key: 'token', value : token}
],
success: function(){
url = qiao.qiniu.url();
facepp();
},
fail: function(s){
showRes('上传文件失败:' + s);
}
});
}
}else{
showRes('请先选择要识别的照片! ');
}
}

为了防止每次点击都上传照片。所以做了一个推断。假设app中的照片src没有变化就不上传了。

否则则用封装好的qiao.h.upload进行上传。

假设上传失败则给与提示。上传成功则进行图片识别。

很多其它教程:

Hbuilder开发App实战1-识岁:http://uikoo9.com/book/detail/5

很多其它学习笔记:http://uikoo9.com/book

Hbuilder开发app实战-识岁03-文件上传的更多相关文章

  1. Hbuilder开发app实战-识岁06-face++的js实现【完结】

    前言 因为识岁app比較简单.所以这节就完结吧, 当然另一些能够优化完好的地方,可是个人兴趣不是非常大, 有想继续完好的,源代码在这里:https://github.com/uikoo9/shisui ...

  2. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  3. 循序渐进学.Net Core Web Api开发系列【5】:文件上传

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍通 ...

  4. [SAP ABAP开发技术总结]文本文件、Excel文件上传下传

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. mui开发app之多图压缩与上传(仿qq空间说说发表)

    欲实现效果图 提出需求点: 用户可自由添加删除替换多张图片,并且显示相应缩略图,限制为8张 用户可选择压缩图或直接上传原图功能 返回提醒用户会丢失填写的信息 下面一个个实现上述需求,从简单到复杂: 需 ...

  6. android开发里跳过的坑——图片文件上传失败

    使用的apache的httpclient的jar包,做的http图片上传,上传时,服务器总返文件格式不对.后来发现,是由于在创建FileBody时,使用了默认的ContentType引起的.所以服务器 ...

  7. Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传

    背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...

  8. iOS开发之结合asp.net webservice实现文件上传下载

    iOS开发中会经常用到文件上传下载的功能,这篇文件将介绍一下使用asp.net webservice实现文件上传下载. 首先,让我们看下文件下载. 这里我们下载cnblogs上的一个zip文件.使用N ...

  9. Vue.js 3.0搭配.NET Core写一个牛B的文件上传组件

    在开发Web应用程序中,文件上传是经常用到的一个功能. 在Jquery时代,做上传功能,一般找jQuery插件就够了,很少有人去探究上传文件插件到底是怎么做的. 简单列一下我们要做的技术点和功能点 使 ...

随机推荐

  1. C++ error: passing 'const std::map<>]' discards qualifiers或pass-by-reference-to-const-map导致的“discards qualifiers”

    产生问题的场景: int func(const map<int, string> &aMap) { string value = amap[0]; } 或者 int  Test:: ...

  2. JS charCodeAt在PHP中的等价物(完整的unicode和表情符号兼容性)

    我在JS中有一个简单的代码,如果涉及特殊字符,我无法在PHP中复制. 这是JS代码(请参阅JSFiddle输出): var str = "t

  3. 精确光源(Punctual Light Sources)

    <Physically-Based Shading Models in Film and Game Production>(SIGGRAPH 2010 Course Notes) (地址: ...

  4. Android SDK不能够更新

    Adroid不能够更新,因为国内将google的服务器墙掉了,在 1) vim /etc/hosts(Windows上路径为:C:\Windows\System32\drivers\etc\hosts ...

  5. [na]tcp&udp扫描原理(nmap常用10条命令)

    nmap软件使用思路及常见用法 Nmap高级用法与典型场景 namp -sn 4种包 使用nmap -sn 查询网段中关注主机或者整个网段的IP存活状态 nmap -sn nmap针对局域网和广域网( ...

  6. [svc]ansible自动化模块

    ansible命令执行模块 - command模块 [执行远程命令] $ ansible n1 -m command -a 'uname -n' - raw模块 [类似于command模块.支持管道传 ...

  7. 深入理解Linux内核-内核同步

    内核基本的同步机制: 抢占内核的主要特点:一个在内核态运行的进程,可能在执行内核函数期间被另外一个进程取代. 内核抢占:Linux 2.6允许用户在编译内核的时候配置十分启用 进程临界区:每个进程中访 ...

  8. Booleans

    两个取值false和true.但要注意Lua中所有的值都可以作为条件.在控制结构的条件中除了false和nil为假,其他值都为真.所以Lua认为0和空串都是真.

  9. Redis List数据类型

    一.概述:      在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在, ...

  10. wireshark抓取本地数据包

    windows系统中,本地向自身发送数据包没有经过真实的网络接口,而是通过环路(loopback interface)接口发送,所以使用基于只能从真实网络接口中抓数据的winpcap是无法抓取本地数据 ...