图片上传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+,采用大文件分片并发上传,极大的提高了文件上传效率,看了官方文档 ...
随机推荐
- .NET MV4 Remote远程验证注意事项及案例
首先是模型代码 public class LoginModel { [Required] [Display(Name = "用户名")] [Remote("CheckNa ...
- C# 设计模式 - 单例模式 演示
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- AndroidUI--SlidingMenu使用例子
SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果.如Evernote ...
- 关于Get和Post的学习笔记(五)
一 .Get和Post的优缺点 1. Get> 优点: 编写起来比较简单,只要在地址后面拼接数据即可. > 缺点: 提交的数据有长度限制.安全性比较差 2.Post > 优点: 提交 ...
- .net 生成缩略图
public static void CreateSmallImage(string minImageFullPath, System.Drawing.Image originalImage, int ...
- SSH框架常会出现的一些错误
1.jquery datatable插件报JSON数据错误 错误原因:hql语句拼接有问题,前一个字符串与后一个字符串之间缺少空格,导致数据库查询失败. 2.addInput页面中input内容不为空 ...
- Nodejs随笔(三):全局对象之process
process是全局对象,在任何地方都可以访问,而且它是EventEmitter的一个实例(关于EventEmitter后面会提到). process对象对一些标准的输入输出流进行了封装,如stdin ...
- HDU 1027 - Ignatius and the Princess II
第 m 大的 n 个数全排列 DFS可过 #include <iostream> using namespace std; int n,m; ]; bool flag; ]; void d ...
- hdu 4710 Balls Rearrangement
题意就不说了,刚开始做我竟然傻傻地去模拟,智商捉急啊~~超时是肯定的 求出 a ,b 的最小公倍数,因为n够长的话,就会出现循环,所以就不要再做不必要的计算了.如果最小公倍数大于n的话,就直接计算n吧 ...
- BZOJ 3233: [Ahoi2013]找硬币( dp )
dp(x)表示最大面值为x时需要的最少硬币数. 枚举x的质因数p, dp(x) = min( dp(x/p) - (p-1) * sigma[a[i]/x] ). ----------------- ...