$(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浏览器,沿用老 ...
随机推荐
- vue深入了解组件——自定义事件
一.事件名 跟组件和prop不同,事件名不存在任何自动化的大小写转换.而是触发的事件名需要完全匹配监听这个事件所用的名称.举个例子,如果重复啊一个camelCase名字的事件: this.$emit( ...
- vue深入了解组件——组件注册
一.组件名 在注册一个组件的时候,我们始终需要给它一个名字.比如在全局注册的时候我们已经看到了: Vue.component('my-component-name', { /* ... */ }) J ...
- CStatic控件SS_NOTIFY属性
SS_NOTIFY Sends the parent window STN_CLICKED, STN_DBLCLK, STN_DISABLE, and STN_ENABLE notification ...
- Java中的默认构造函数
java中如果在一个类中没有写明任何构造函数的,那么会存在一个无参的构造函数,如下: public class Children { private String name; private Stri ...
- 原生nodejs 学习笔记1
网上许多nodejs教程或书藉都是教你调用第三方模块来编写nodejs应用的,虽然这是非常便捷的,但是封装太厚,你基本一点东西还是没有学到.人家的模块,人家想怎么改就行,可以下一版本就改了接口,你的应 ...
- where T:new() 是什么意思
经常看到方法后面加where T:new() ,下面来解释下 比如如下这个方法 protected static T CreateNewInstance<T>() where T : ...
- C++调试帮助
assert预处理宏 assert是一种预处理宏,所谓预处理其实是一个预处理变量,其行为类似于内联函数,assert宏使用一个表达式作为其条件: assert(expr) 首先是对expr进行求值,如 ...
- Json解析数据的简单使用
简单的记一下Json解析的简单实用: 使用场景:后台传到客户端的Json数据,类似于: string jsonObject="{'Name':'Jack','Age':25}"; ...
- C++ 静态数据成员和静态成员函数
一 静态数据成员: 1.静态数据成员的定义. 静态数据成员实际上是类域中的全局变量.所以,静态数据成员的定义(初始化)不应该被放在头文件中,因为这样做会引起重复定义这样的错误.即使加上#ifndef ...
- inputStream、File、Byte、String等等之间的相互转换
一:inputStream转换 1.inputStream转为byte //方法一 org.apache.commons.io.IOUtils包下的实现(建议) IOUtils.toByteArray ...