图片上传webuploader
/**
* 基于jquery的图片上传控件
*/
!function ($) { "use strict";
//定义上传事件
var upImgEvent = {
fileQueued: 'fileQueued',//文件加载的时候触发
//statusChange: 'statuschange',
uploadSuccess: 'uploadSuccess',//文件上传成功触发默认路径应该是固定的
uploadError: 'uploadError',//文件上传报错触发
error: 'error'//文件上传验证报错的时候触发,比如大小,上传重复图片
}; //定义内部使用函数
var _util = {
_isSupportImage: function () {
var data = new Image();
var support = true;
data.onload = data.onError = function () {
if (this.width != 1 || this.height != 1) {
support = false;
}
};
data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
return support;
}(),
_renderHtml: function (file) {
return $('<div class="file_img" id="' + file.id + '">' +
'<div class="delete"><a href="javascript:deleteImg(\'' + file.id + '\',1)">删除</a></div>' +
'<span style="vertical-align: middle; display: inline-block; height: 100%;"></span>' +
'<img id="img' + file.id + '" title="' + file.name + '" src="' + window.base + '/resources/images/loading_.gif" /> ' +
'<div id="wart" style="position:absolute;z-index:99;left:5px;top:10px;"><span style="color: blue">图片正在上传.请等待...</span><div>'+
'</div>')
},
_showError: function (code) {
$('body').hideLoading();
$("img").next().remove();
var text = null;
switch (code) {
case 'exceed_size':
text = '文件太大了..请重新上传';
break;
case 'interrupt':
text = '上传暂停..';
break;
default:
text = '上传失败,请重试...';
break;
}
alert(text);
}
}; var Img = function (element, options) {
var imgRadio = {
//图片属性
_ratio: function () {
if (window.devicePixelRatio) {
return window.devicePixelRatio;
} else {
return 1;
}
}, //像素比例
thumbWidth: 140 * this._ratio,
thumbHeight: 140 * this._ratio
};
//构造默认options
var defaultOption = {
packId:"#"+options.packId,
swf: window.base + '/resources/js/webuploader/Uploader.swf',//ie6,7,8 需要flash支持,默认优先Html5
server: "http://localhost:8080/person"+options.uploadPath,//文件上传的服务器路径
pick: {
id: "#"+options.uploaderId,
multiple: options.isMultiple//是否单选
},
duplicate: true,//可以重复
sendAsBinary: true,//android4 有些机型必须开启 为了兼容 都启用这种模式
auto: true,//开启选择图片自动上传
fileVal: 'bin',//文件上传字段名称
fileSingleSizeLimit: 10 * 1024 * 1024, //10M 单个图片只能最大10M
disableGlobalDnd: true,//不能拖拽
accept: {
//上传图片所支持的类型
title: "上传图片",
extensions: 'gif,jpg,jpeg,bmp,png',
mimeTypes: 'image/*'
},
resize: false,//不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
//压缩
compress: {
width: 1600,
height: 1600,
// 图片质量,只有type为`image/jpeg`的时候才有效。
quality: 90,
// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
allowMagnify: false,
// 是否允许裁剪。
crop: false,
// 是否保留头部meta信息。
preserveHeaders: true,
// 如果发现压缩后文件大小比原来还大,则使用原来图片
// 此属性可能会影响图片自动纠正功能
noCompressIfLarger: false,
// 单位字节,如果图片大小小于此值,不会采用压缩。
compressSize: 1024 * 1024 * 1
},
callback:undefined || options.callback,
success:undefined || options.success
};
this.init(defaultOption,imgRadio);
};
Img.prototype.init = function (options,radio) {
var uploader = WebUploader.create(options);
//构造监听事件
uploader.on(upImgEvent.fileQueued, function (file) {
$('body').showLoading();
$(options.pick.id).showLoading();
if (file.getStatus() === 'invalid') {
_util._showError(file.statusText);
}
if(options.callback!=undefined && options.callback instanceof Function){
this.makeThumb(file, function (error, src) {
if (error) {
console.log("can not preview :" + error);
return;
}
if (_util._isSupportImage) {
options.callback.apply(this,[file,src]);
}
}, radio.thumbWidth, radio.thumbHeight);
}else{
var html = _util._renderHtml(file);
//构造预览图
this.makeThumb(file, function (error, src) {
var img = $("#img" + file.id);
if (error) {
console.log("can not preview :" + error);
return;
}
if (_util._isSupportImage) {
img.empty().attr('src', src);
}
}, radio.thumbWidth, radio.thumbHeight);
html.appendTo($(options.packId));
}
});
uploader.on(upImgEvent.uploadSuccess, function (file, response) {
if (response.success) {
$('body').hideLoading();
$(options.pick.id).hideLoading();
$("img").next().remove();
var imgResponse = response.data;
if(options.success!=undefined && options.success instanceof Function){
options.success.apply(this,[file,imgResponse]);
}
}else{
$('body').hideLoading();
$("img").next().remove();
alert(response.msg);
}
});
uploader.on(upImgEvent.uploadError, function (file) {
$('body').hideLoading();
$("img").next().remove();
alert("文件上传失败" + file.name);
});
uploader.on(upImgEvent.error, function (code) {
$('body').hideLoading();
$("img").next().remove();
if (code === 'F_DUPLICATE')
alert("文件已经存在.请换个图片重新上传...");
else if (code === 'F_EXCEED_SIZE')
alert("文件不能超过10M,请重新上传");
else if (code === 'Q_TYPE_DENIED')
alert("文件类型只能是图片类型,请重新上传");
else
alert("error type :" + code);
});
};
$.webUploader = function (options) {
return new Img(this, options);
}
}(window.jQuery);
function deleteImg(id, type){
$("#" + id).remove();
//如果是sybd则显示上传插件
if (type == 1) {
$("#sybd").parent().show();
}
}
图片上传webuploader的更多相关文章
- Asp.Net Mvc 使用WebUploader 多图片上传
来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...
- 百度上传工具webuploader,图片上传附加参数
项目中需要上传视频,图片等资源.最先做的是上传图片,开始在网上找了一款野鸡插件,可以实现图片上传预览(无需传到后台).但是最近这个插件出了莫名的问题,不易修复,一怒之下,还是决定找个大点的,靠谱的插件 ...
- 妈蛋:kinMaxShow旋转木马异常,WebUploader图片上传坑爹,图像被压缩
今天晚上在改造轮播图. 原来的代码是这种: <div> <img src="${static}/image/index/banner/`.jpg" /> & ...
- WEB版一次选择多个图片进行批量上传(WebUploader)的解决方案
最近在学习百度的开源上传组件WebUploader,上一篇文章,学习了批量文件上传,今天学习一下批量图片上传,实际上与文件上传很类似,只是添加了图片显示功能,这个功能WebUploader组件中已经提 ...
- 图片上传组件webuploader
前端组件webuploader 当时也是搞了很久参考这种demo,但是没记.现在事后大致总结下.直接上大概代码(我使用asp.net MVC来做的): 执行顺序:(get)Record/Add——A ...
- easyui+webuploader+ckeditor实现插件式多图片上传-添加图片权限(图片上传人是谁,只能看到自己的图片)
需求: 实现过程及思路 1.先页面布局 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=" ...
- easyui+webuploader+ckeditor实现插件式多图片上传
需求:在ckeditor编辑器上实现多图片上传并要求另外单独选择ckeditor上传的图片作为封面 页面效果说明: 动态效果图: 第一步:页面布局 <html xmlns="http: ...
- WebUploader文件图片上传插件的使用
最近在项目中用到了百度的文件图片上传插件WebUploader.分享给大家 需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUp ...
- WebUploader压缩图片上传
WebUploader,由Baidu FEX 团队开发,以H5为主,FLASH为辅,兼容 IE6+,iOS 6+, android 4+,采用大文件分片并发上传,极大的提高了文件上传效率,看了官方文档 ...
随机推荐
- 消息内容定义XML
<XML> <Title>title</Title> <ContentType>text/plain</ContentType&g ...
- MediaInfo使用简介(新版本支持HEVC)
MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用.免费获得源代码).他除了提供DLL之外,本身也提供GUI工具用于查看视频信息.我使用中发现,新版本的Media ...
- 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)
第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- 【最小费用最大流模板】【Uva10806+Spring Team PK】Dijkstra, Dijkstra,
题意:从1到n 再从n到1 不经过重复的边 ,(如果是点就是旅行商问题了),问最短路 建立一个超级源S S到1连一条费用为0,容量为2的边,求费用流即可 如果流<2 那么hehe 否则 输 ...
- spring boot + velocity中文乱码解决方式
在application.properties文件中,加入如下配置: spring.velocity.properties.input.encoding=UTF-8spring.velocity.pr ...
- C# DropDownList绑定文件夹
首先创建一个类,类名称为FileControl, /// <summary> /// 获取制定文件夹下面的文件夹 /// </summary> /// <param na ...
- An Data-Scientist Prepares 《数据科学家的自我修养》
从今天开始,博主将用大概1000天的时间记录自己学习并成为初级数据科学家(数据分析师)的心路历程. 包括数据科学家所必需的的基础知识:数学,统计,计算机,商业,沟通能力等. 希望博主能够在2017前完 ...
- 随机抽样一致性算法(RANSAC)
本文翻译自维基百科,英文原文地址是:http://en.wikipedia.org/wiki/ransac,如果您英语不错,建议您直接查看原文. RANSAC是"RANdom SAmple ...
- Spring-----代码中使用注入的Properties配置属性
转载自:http://blog.csdn.net/hekewangzi/article/details/49990799
- Android TextView 手动上下滑动
有时候项目需求,TextView只显示若干行,其他部分隐藏,需要滑动才会显示,一般默认都是自动填充全部显示,或者手动设置高度,那样文字就显示不全,这时候可以使用下面的解决方案,代码设置显示的行数,然后 ...