图片上传webuploader

时间:2022-08-27 15:36:20
/**
* 基于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的更多相关文章

  1. Asp&period;Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  2. 百度上传工具webuploader&comma;图片上传附加参数

    项目中需要上传视频,图片等资源.最先做的是上传图片,开始在网上找了一款野鸡插件,可以实现图片上传预览(无需传到后台).但是最近这个插件出了莫名的问题,不易修复,一怒之下,还是决定找个大点的,靠谱的插件 ...

  3. 妈蛋:kinMaxShow旋转木马异常,WebUploader图片上传坑爹,图像被压缩

    今天晚上在改造轮播图. 原来的代码是这种: <div> <img src="${static}/image/index/banner/`.jpg" /> & ...

  4. WEB版一次选择多个图片进行批量上传&lpar;WebUploader&rpar;的解决方案

    最近在学习百度的开源上传组件WebUploader,上一篇文章,学习了批量文件上传,今天学习一下批量图片上传,实际上与文件上传很类似,只是添加了图片显示功能,这个功能WebUploader组件中已经提 ...

  5. 图片上传组件webuploader

    前端组件webuploader 当时也是搞了很久参考这种demo,但是没记.现在事后大致总结下.直接上大概代码(我使用asp.net  MVC来做的): 执行顺序:(get)Record/Add——A ...

  6. easyui&plus;webuploader&plus;ckeditor实现插件式多图片上传-添加图片权限&lpar;图片上传人是谁,只能看到自己的图片&rpar;

    需求: 实现过程及思路 1.先页面布局 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&quot ...

  7. easyui&plus;webuploader&plus;ckeditor实现插件式多图片上传

    需求:在ckeditor编辑器上实现多图片上传并要求另外单独选择ckeditor上传的图片作为封面 页面效果说明: 动态效果图: 第一步:页面布局 <html xmlns="http: ...

  8. WebUploader文件图片上传插件的使用

    最近在项目中用到了百度的文件图片上传插件WebUploader.分享给大家 需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUp ...

  9. WebUploader压缩图片上传

    WebUploader,由Baidu FEX 团队开发,以H5为主,FLASH为辅,兼容 IE6+,iOS 6+, android 4+,采用大文件分片并发上传,极大的提高了文件上传效率,看了官方文档 ...

随机推荐

  1. 锋利的jquery-读书笔记&lpar;一&rpar;

    最近转职做前端,学了两个月目前学到jquery的部分,看的是<锋利的jquery>这本书,特地开了博客将自己学习过程中看到的一些知识做一个笔记. 第一章: 一.jQuery对象和DOM对象 ...

  2. java学习第14天(集合的框架和基本遍历)

    今天主要是接触了集合的概念,集合简单意义上来说就是类对象的集合,我们一般用Collection 这个接口来表示,集合主要体系为: Collection |--List |--ArrayList |-- ...

  3. ACM&colon; 限时训练题解- Travelling Salesman-最小生成树

    Travelling Salesman   After leaving Yemen, Bahosain now works as a salesman in Jordan. He spends mos ...

  4. NPM 与 left-pad 事件:我们是不是早已忘记该如何好好地编程?

    转自:http://www.techug.com/npm-left-pad-have-we-forgotten-how-to-program 开发者朋友们,我们该谈一谈这个问题了.你们应该知道本周的  ...

  5. Web 设计新趋势&colon; 使用 SVG 代替 Web Icon Font

    如果你还在使用 Icon Font 作为网页中显示图标的实现方案,那么你可能有点 Out 了. 由于使用 Icon Font 显示图标存在一些缺陷,开发者们一直在致力于探索使用 SVG 作为替代的方法 ...

  6. 【转】eclipse使用git提交到osc

    转自:http://my.oschina.net/gaowm/blog/271623 目录[-] 一.Git下载 二.Git安装 三.设置用户名和密码 四.准备代码库 五.创建本地仓库 六.eclip ...

  7. UVA&lowbar;Rotation Game&lt&semi;旋转游戏&gt&semi; UVA 1343

    The rotation game uses a # shaped board, which can hold 24 pieces of square blocks (see Fig.1). The ...

  8. IOS开发之UIView的基本使用

    一.视图 1. iphone手机上的窗口就是UIWindow类的一个实例(1个手机应用只有一个UIWindow). 2.UIView类用于实现视图. UIView提供了方法来添加和删除子视图.一个视图 ...

  9. linux 命令mkdir、cd

    mkdir 创建文件夹 -p 递归创建文件夹 可以一次性创建多个目录 cd pwd 显示当前目录的绝对路径 rmdir  删除空目录  只能删除空目录  鸡肋,基本用rm cp  复制文件产品 -r ...

  10. 配置SecureCRT密钥连接Linux

    SSH公钥加密的方式使得对方即使截取了帐号密码,在没有公钥私钥的情况下,依然无法远程ssh登录系统,这样就大大加强了远程登录的安全性. 1.        编辑配置文件 /etc/ssh/sshd_c ...