$(function() {
	/**
	 * 初始化Web Uploader
	 */
	var uploader = WebUploader.create({
		swf : '../mobile/Uploader.swf',// swf文件路径
		server : "/upload.do",// 文件接收服务端。
		auto : true,// 选完文件后,是否自动上传。
		// 上传参数列表(这里可以暂时不写,可以在点击按钮时 uploader.options.formData = obj;)
		formData : {
			id : id,
			name : name
		},
		// 指定选择文件的按钮
		pick : {
			id : '#file',// 指定选择文件的按钮的ID,class等
			multiple : true,// 是否开起同时选择多个文件能力
			innerHTML : "上传"// 指定按钮文字
		},
		// 指定接受哪些类型的文件
		accept : {
			title : 'Images',
			extensions : 'jpg,png,jpeg',
			mimeTypes : 'image/*'
		},
		// 配置生成缩略图的选项(可不写)
		thumb : {
			// 缩略图的宽高,当取值介于0-1时,被当成百分比使用
			width : 500,
			height : 250,
			// 强制转换成指定的类型
			type : "image/jpeg",
			// 图片质量,只有type为image/jpeg的时候才有效
			quality : 70,
			// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false
			allowMagnify : true,
			// 是否允许裁剪
			crop : true
		},
		// 是否压缩图片, 默认如果是jpeg文件上传前会压缩,如果是false, 则图片在上传前不进行压缩
		// compress:false,
		compress : {
			// 压缩后的尺寸
			width : 100,
			height : 100,
			// 图片质量,只有type为image/jpeg的时候才有效。
			quality : 90,
			// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false
			allowMagnify : false,
			// 是否允许裁剪
			crop : false,
			// 是否保留头部meta信息
			preserveHeaders : true,
			// 如果发现压缩后文件大小比原来还大,则使用原来图片,此属性可能会影响图片自动纠正功能
			noCompressIfLarger : false,
			// 单位字节,如果图片大小小于此值,不会采用压缩
			compressSize : 0
		},
		duplicate : false,// 不允许重复上传
		resize : false,// 尺寸不改变
		method : 'POST',// 文件上传方式,POST或者GET,默认值:'POST'
		disableGlobalDnd : true,// 是否禁掉整个页面的拖拽功能
		fileNumLimit : 50,// 每次上传文件数
		fileSizeLimit : 1000 * 1024 * 1024,// 每次上传文件的大小总和
		fileSingleSizeLimit : 20 * 1024 * 1024,// 单个上传文件的大小
		threads : 10,// 上传并发数。允许同时最大上传进程数。
	});
	/**
	 * 点击上传按钮
	 */
//	$("#file").click(function() {
//		$(".webuploader-element-invisible").click();
//	})
	/**
	 * 点击上传按钮
	 */
	$("#file").on('click',function(event){
		
//		var obj = new Object();
//		obj.id = id;
//		obj.name = name;
//		uploader.options.formData = obj;
		
		//手动上传
		uploader.upload();
		//手动停止
		uploader.stop();
		
	});
	
	
	/**
	 * 先执行此方法
	 */
	uploader.on('all', function (type) {
        if (type === 'beforeFileQueued') {
           //当文件被加入队列之前触发
        } else if (type === 'fileQueued') {
            //当文件被加入队列以后触发(加一个文件就触发一次)
        } else if (type === 'filesQueued') {
            //当一批文件添加进队列以后触发(当所有文件都加完后触发)
        } else if (type === 'fileDequeued') {
        	//当文件被移除队列后触发
        } else if (type === 'reset') {
        	//当 uploader 被重置的时候触发
        } else if (type === 'startUpload') {
        	//当开始上传流程时触发
        } else if (type === 'stopUpload') {
        	//当开始上传流程暂停时触发。
        } else if (type === 'uploadFinished') {
        	//当所有文件上传结束时触发。
        } else if (type === 'uploadStart') {
        	//某个文件开始上传前触发,一个文件只会触发一次。
        } else if (type === 'uploadProgress') {
        	//上传过程中触发,携带上传进度。
        } else if (type === 'uploadError') {
        	//当文件上传出错时触发。
        } else if (type === 'uploadSuccess') {
        	//当文件上传成功时触发。
        } else if (type === 'uploadComplete') {
        	//不管成功或者失败,文件上传完成时触发
        } else if (type === 'error') {
        	//当validate不通过时,会以派送错误事件的形式通知调用者
        }         
    });
	
	/**
	 * 开始上传
	 */
	uploader.on('startUpload', function() {
		 //console.log("开始上传:startUpload");
	})
	/**
	 * 把上传的图片加入队列
	 */
	uploader.on('fileQueued', function(file) {
		var $li = $('<div class="picbox"><div class="loading"></div>'
				+ '<div class="pop_mask"></div><div class="num" id='
				+ file.id + '>ok</div></div>');
		$(".piclist ").append($li);
		uploader.makeThumb(file, function(error, src) {
			if (error) {
				$img.replaceWith('<span>不能预览</span>');
				return;
			}
			$li.attr('style', "background-image:url(" + src + ");");
		}, 200, 200);
	})
	/**
	 * 上传过程中监视上传文件是否符合条件 
	 */
	uploader.on("error", function(code) {
		if (code == "Q_EXCEED_NUM_LIMIT") {
			loading = layer.msg('一次上传的文件不能多于50张', {
				icon : 7,
				shade : 0.01,
				time : 1000
			});
		}
		if (code == "F_EXCEED_SIZE") {
			loading = layer.msg('文件大小不能大于20M', {
				icon : 7,
				shade : 0.01,
				time : 1000
			});
		}
		if (code == "Q_EXCEED_SIZE_LIMIT") {
			loading = layer.msg('一次上传所有文件总大小不能大于1000M', {
				icon : 7,
				shade : 0.01,
				time : 1000
			});
		}
		if (code == "Q_TYPE_DENIED") {
			loading = layer.msg('上传文件类型只支持jpg,png,jpeg格式', {
				icon : 7,
				shade : 0.01,
				time : 1000
			});
		}
		if (code == "F_DUPLICATE") {
			loading = layer.msg('上传文件有重复', {
				icon : 7,
				shade : 0.01,
				time : 1000
			});
		}
	});
    /**
     * 上传进度条
     */
	uploader.on( 'uploadProgress', function( file, percentage ) {
		//console.log(file.id);
		var $progress = $( '#'+file.id );
		var $progressNum = $progress.find(".mb5");
		var $progressBar = $progress.find(".progressBar");
	    // 避免重复创建
	    if ( !$progressBar.length ) {
	        $percent = $('<p class="progressBar"><span></span></p>')
	                .appendTo( $("#"+file.id).parent())
	                .find('span');
	    }
	    $progressBar.css( 'width', percentage * 100 + '%' );
	    $progressNum.text(percentage * 100+'%');
	});
	
	/**
	 * 上传成功
	 */
	uploader.on('uploadSuccess', function(file, ret) {
		if (ret.success == true) {// 正常
		} else {
			$("#" + file.id).parent().remove();
			alert(file.name + "上传失败,请选择其他照片。");
			return;
		}
		var data = {};
		var response = "{\"picId\":\"" + ret.picId + "\",\"width\":\""
				+ ret.width + "\",\"height\":\"" + ret.height
				+ "\",\"filePath\":\"" + ret.filePath + "\"}\r\n";
		data["from"] = from;
		data["text"] = response;
		data["to"] = "PC_" + webuuid;
		websocket.send(JSON.stringify(data));
	});
	/**
	 * 上传失败
	 */
	uploader.on('uploadError', function(file) {
		layer.open({
	    	title:"温馨提示",
	    	content:"上传图片不符合要求"
	    });
		$("#" + file.id).parent().remove();
	})
	/**
	 * 上传失败或成功都会执行
	 */
	uploader.on('uploadComplete', function(file) {
		$("#" + file.id).parent().find(".loading").remove();
		$("#" + file.id).parent().find(".pop_mask").remove();
	})
	uploader.on('uploadFinished', function() {
		$(".loading").each(function() {
			$(this).parent().remove();
		});
		$("#pop_mask").hide();
		$("#noti").hide();
		uploader.reset();
	});
	function hashString(str) {
		var hash = 0, i = 0, len = str.length, _char;
		for (; i < len; i++) {
			_char = str.charCodeAt(i);
			hash = _char + (hash << 6) + (hash << 16) - hash;
		}
		console.log("hashcode:" + hash);
		return hash;
	}
})
注:本文是自己总结,如有错误敬请谅解,评论指出错误,共同进步,共勉,谢谢。
												
												
						- jquery组件WebUploader文件上传用法详解
		这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一 ... 
- webuploader文件上传问题总结
		webuploader百度的一个很好的上传文件插件: 选择它的原因: 1.浏览器兼容性好,支持IE8,这是我最主要的,好多上传插件都不支持: 2.跨域访问,因为我的上传需要到图片服务器上,这就需要跨域 ... 
- Java结合WebUploader文件上传
		之前自己写小项目的时候也碰到过文件上传的问题,没有找到很好的解决方案.虽然之前网找各种解决方案的时候也看到过WebUploader,但没有进一步深究.这次稍微深入了解了些,这里也做个小结. 简单的文件 ... 
- webuploader 文件上传插件 IE8/9 文件选择不上传
		IE8/9下文件上传是采用flash模式,一直发送http://xxx.xxx.xx.xx:8888/crossdomain.xml请求,状态码为404,原因是上传文件的服务器未配置crossdoma ... 
- easyui webuploader 文件上传演示
		webuploader 上传首页 webuploader 上传前页面 webuploader 上传中页面 图就不上传了,状态会编程上传中 webuploader 已上传页面 
- Baidu WebUploader 前端文件上传组件的使用
		简介 WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流I ... 
- 使用webuploader实现大文件上传分片上传
		本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ... 
- 用百度webuploader分片上传大文件
		一般在做文件上传的时候,都是通过客户端把要上传的文件上传到服务器,此时上传的文件都在服务器内存,如果上传的是视频等大文件,那么服务器内存就很紧张,而且一般我们都是用flash或者html5做异步上传, ... 
- 功能强大的文件上传插件带上传进度-WebUploader
		WebUploader是由Baidu WebFE(FEX)团队开发的一个以HTML5/FLASH构建的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用老 ... 
随机推荐
	
									- c语言使用librdkafka库实现kafka的生产和消费实例(转)
			关于librdkafka库的介绍,可以参考kafka的c/c++高性能客户端librdkafka简介,本文使用librdkafka库来进行kafka的简单的生产.消费 一.producer librd ... 
- eclipse中创建多模块maven web项目
			本文讲述在eclipse中创建分模块maven web项目. 暂时将一个项目分为controller:service:dao以及父类模块四部分. 1.创建父类模块. 创建一个简单的maven proj ... 
- 是否需要主动调用Bitmap的recycle方法
			一个Bitmap使用完后,是只需要等它成为垃圾后让GC去回收,还是应该主动调用recycle方法呢?或者说,主动调用recycle方法是否有好处,是否能马上回收内存呢? 带着这个问题来看源码(我看的4 ... 
- spring中作用域的问题
			在一般情况下:我们登录系统时,第一次登录当用户名或密码输入错误,在登录页面给出错误原因,当我们再刷新登录页面,应该是首次登录系统的页面(这时就不应该再给出出错提示),这时我们就应该想到错误提示信息到底 ... 
- HTML5 画图--文字
			1:html <div style="margin:0 auto;width:794px;height:1123px"> <canvas id="myC ... 
- bedtools简介及应用
			1)背景处理基因组数据中,比较基因组不同区域,例如寻找overlap等,是一种基本的且常见的问题.虽然UCSC 中‘Table Browser’或者Galaxy可以用来处理,但是当这些工具面对大的数据 ... 
- css字体加粗
			参考 https://zhidao.baidu.com/question/2138403197991538308.html font-weight:bold; 
- Distributing Ballot Boxes
			Distributing Ballot Boxes http://acm.hdu.edu.cn/showproblem.php?pid=4190 Time Limit: 20000/10000 MS  ... 
- IBM MQ 与spring的整合
			文件名:applicationContext-biz-mq.xml 新浪博客把里面的代码全部转换成HTML了,所以无法粘贴 可以查看CSDN里面的:http://blog.csdn.net/xiazo ... 
- Spring框架之Bean的作用范围和生命周期的注解
			1. Bean的作用范围注解 * 注解为@Scope(value="prototype"),作用在类上.值如下: * singleton -- 单例,默认值 * prototype ...