做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
原文:http://www.cnblogs.com/liguangsunls/p/7379718.html