前言
做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