//原来的绑定方式 
$('#' + frm_name).liteUploader({
script: url,
params: {
type: "image",
size: size
},
singleFileUploads: false
}).on("lu:success", function (e, response) {
var json = JSON.parse(response);
return function (res) { json; }; }).on('lu:error', function (e, response) {
var json = JSON.parse(response); }); $('#' + frm_name).change(function () {
$(this).data("liteUploader").startUpload();
});

liteUploader插件兼容性比较好,而且很小巧,相对于某些控件可能依赖flash或者需要绑定表单,不过通常图片上传都在一个大的form做提交验证,导致form的嵌套,这时表单提交的上传插件就不使用了。

好在,liteuploader支持这个,单绑定上传的input就够了

按插件原生绑定方式,change需要独立写,而且事件等都用on链式操作(这点还可以接受)。导致插件不是整体的形式,分离了。

下面是封装写法

//使用liteUploader插件
cj.PostImagesFile = function (options) {
this.setting = {
url: '/api/Files/PostFile',
size: '200_100',
id: 'browseLogo',
startUpload: function () {
},
success: function () {
},
error: function () {
}
};
$.extend(this.setting, options);
this.init();
}; cj.PostImagesFile.prototype = {
constructor: cj.PostImagesFile,
init: function () {
var _this = this;
var $obj = $('#' + this.setting.id);
$obj.liteUploader({
script: this.setting.url,
params: {
type: "image"
},
singleFileUploads: false
}).on("lu:success", function (e, response) {
var json = JSON.parse(response);
_this.setting.success(json);
}).on('lu:error', function (e, response) {
var json = JSON.parse(response);
_this.setting.error(json);
}); $obj.change(function () {
$obj.data("liteUploader").startUpload();
});
}
};

在原生链上,写了个init初始方法,新建对象时,会自动调用init方法,最后把on的事件,调用构造器success,error等返回结果给对外使用。

cj.PostImagesFile =
new cj.PostImagesFile({
url: '/api/Files/PostFile',
size: '200_100',
id: 'browseLogo',
startUpload: function () {
},
success: function (res) {
console.info(res);
vm_new.logo(res.data[0]);
},
error: function (res) {
}
});

只写了success的返回,其他方式同理。 vm_new是ko(knockout)的绑定方式

PS:这个异步不能用Promise,Promise方式resolve只能执行一次,当出现第二次上传同一个控件时,resolve就不可以执行了。

效果图

liteUploader上传控件的封装使用的更多相关文章

  1. 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)

    前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...

  2. 百度 flash html5自切换 多文件异步上传控件webuploader基本用法

    双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...

  3. 基于AngularJs的上传控件-angular-file-upload

    今天跟大家分享的是一个依赖于angular的上传控件. 前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用 ...

  4. [转]html5表单上传控件Files API

    表单上传控件:<input type="file" />(IE9及以下不支持下面这些功能,其它浏览器最新版本均已支持.) 1.允许上传文件数量 允许选择多个文件:< ...

  5. jquery本地上传预览扩展(隐藏上传控件单击图片上传支持ie!!)

    我用到的原材料地址:http://www.cnblogs.com/leejersey/p/3660202.html 修改后: /// <reference path="../../Js ...

  6. flash上传控件跨域

    工作中需要使用百度开发的ueditor,但服务器部署中前端代码和后端代码在不同的域名下,现已解决的前端调后端代码的跨域问题.可是,ueditor中的上传图片flash控件也涉及跨域问题,经过查找发现可 ...

  7. jquery文件上传控件 Uploadify

    (转自 http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html) 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同 ...

  8. 使用Uploadify(UploadiFive)多文件上传控件遇到的坑

    最近项目中需要实现多文件上传功能,于是结合需求最终选择了Uploadify这一款控件来实现.相比其他控件,Uploadify具有简洁的界面,功能API基本可以解决大多数需求,又是基于jquery的,配 ...

  9. 用jQuery File Upload做的上传控件demo,支持同页面多个上传按钮

    需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为 ...

随机推荐

  1. 【转】计算机信息系统安全保护等级划分准则(GB 17859-1999)

    计算机信息系统安全保护等级划分准则(GB 17859-1999) 概述 计算机信息系统安全保护等级划分准则(GB 17859-1999) 1 范围 本标准规定了计算机系统安全保护能力的五个等级,即: ...

  2. 简简单单美化你Mac os x的终端配色

    Mac OS x虽然是以图形界面出名的,但是作为一个类Unix系统,还是离不开终端(shell)的,尤其是对于开发人员来说,Mac OS x默认状态的终端给人的感觉总是不那么舒服,所以很有必要对它进行 ...

  3. Optaplanner规划引擎的工作原理及简单示例(2)

    开篇 在前面一篇关于规划引擎Optapalnner的文章里(Optaplanner规划引擎的工作原理及简单示例(1)),老农介绍了应用Optaplanner过程中需要掌握的一些基本概念,这些概念有且于 ...

  4. 工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01

    最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定 ...

  5. 微信小程序中的组件使用2

    需求    上面两个页面是同一个小程序的不同页面,两个页面中都是用到了label,有相似的地方,但是也有不同之处,这个时候,如果我们想要将这些label做出组件,然后复用,有该怎么做呢? 基础组件 首 ...

  6. android studio Authentication failed for

    今天更新项目代码提示   Authentication failed for  后来一起是把git平台密码修改了 忘了修改android studio 密码所以更新失败 我在android studi ...

  7. selenium常用的API

    打开浏览器 driver.get("http://www.baidu.com") 最大化浏览器 driver.maximize_window() 关闭浏览器 driver.quit ...

  8. 位运算练习:将整数A转换为B,需要改变多少个bit位

    思路解析: 将整数A转换为B,如果A和B在第i(0<=i<32)个位上相等,则不需要改变这个BIT位,如果在第i位上不相等,则需要改变这个BIT位.所以问题转化为了A和B有多少个BIT位不 ...

  9. 打包时,node内存溢出问题解决方法

    在使用npm run build打包时,遇到node内存溢出问题. 网上查找到的决绝方案.解决方案一: 安装increase-memory-limit插件,扩大node的内存限制 但是,这个解决方案在 ...

  10. Linux 修改zabbix server的web访问端口

    在安装zabbix server的时候默认就安装了apache,zabbix依靠apache提供的web服务,修改Zabbix的浏览器访问端口,就是修改apache的服务端口(默认端口:80) 1.编 ...