在Web项目中,经常有这样一个需求,就是对图片的批量上传,利用form表单的file可以实现图片的上传,但是用户体验不好,而且不支持ajax提交,网上也有很多图片上传插件,有基于javascript的,也有基于flash的,但是给我的感觉,要么用户体验不好,要么收费的,那么能不能有一个比较好的方案呢?那就是Ueditor!

UEditor是百度出品的一款富文本编辑器,里面也集成了一个基于Flash的图片上传插件,由于Ueditor是开源的,所以源代码很容易得到,经过我的一番研究,找到了它的图片上传插件的一些猫腻,于是把图片上传插件给独立出来了,形成了一个模块,以后批量图片上传可以直接用。

首先看下UEditor的目录结构:

那么图片上传插件是放到哪里的呢?由于比较分散,所以这部分经验不足,很难找到,可能也是ueditor为了防止滥用吧。请看下图:

把红框内的文件拷贝出来,放到一个新的文件夹下,如图:

把所有文件找到后,接下来就是振奋人心的时候了(编码),当然,javascript代码如何写也是通过研究他的源码实现的,接下来我将源码放出来,各位童鞋只需要使用就行了:

 <script type="text/javascript" src="${ctx }/upload/tangram.js"></script>
<div id="flashContainer"></div>
var flashObj = uploadPic();
function uploadPic(){$("#flashContainer").html("");/*-=-=-=-=-=-=-=全局变量模块-=-=-=-=-=-=-*///flash初始化参数var flashOptions ={createOptions:{id:'flash',url:'${ctx}/upload/image/imageUploader.swf',//这个就是附件里面的FLASHwidth:'510',//容器宽度height:'360',//容器高度errorMessage:'Flash插件初始化错误,请更新您的flashplayer版本!',wmode:'window',ver:'10.0.0',// 初始化的参数就是这些,vars:{width:500,      //width是flash的宽height:350,        //height是flash的高gridWidth:115,  // gridWidth是每一个预览图片所占的宽度,应该为width的整除gridHeight:120,  // gridHeight是每一个预览图片所占的高度,应该为height的整除picWidth:100,    // 单张预览图片的宽度picHeight:100,    // 单张预览图片的高度uploadDataFieldName:'picdata',    // POST请求中图片数据的keypicDescFieldName:'pictitle',    // POST请求中图片描述的keymaxSize:2,                    // 文件的最大体积,单位McompressSize:2,               // 上传前如果图片体积超过该值,会先压缩,单位MmaxNum:20,                        // 最大上传多少个文件backgroundUrl:'',               //背景图片,留空默认listBackgroundUrl:'',           //预览图背景,留空默认buttonUrl:'',                   //按钮背景,留空默认compressSide:1,                //等比压缩的基准,0为按照最长边,1为按照宽度,2为按照高度compressLength:700,                // 能接受的最大边长,超过该值Flash会自动等比压缩url:'',   // 上传处理页面的url地址ext:null,//扩展的参数,json格式fileType:'{"description":"图片(*.jpg,*.jpeg,*.png,*.gif)", "extension":"*.gif;*.jpeg;*.png;*.jpg"}'      //上传文件格式限制},container: 'flashContainer'//flash容器id},selectFileCallback:function(selectFiles){//选择文件时的回调函数selectedImageCount += selectFiles.length;if(selectedImageCount) baidu.g("upload").style.display = "";dialog.buttons[0].setDisabled(true); //初始化时置灰确定按钮 },exceedFileCallback: 'exceedFileCallback',   // 文件超出限制的最大体积时的回调deleteFileCallback: function(delFiles){//删除文件时的回调函数selectedImageCount -= delFiles.length;if (!selectedImageCount) {baidu.g("upload").style.display = "none";dialog.buttons[0].setDisabled(false); //没有选择图片时重新点亮按钮}}, startUploadCallback: 'startUploadCallback',  // 开始上传某个文件时的回调uploadCompleteCallback: 'uploadCompleteCallback',   // 某个文件上传完成的回调uploadErrorCallback: function (data){//console && console.log(data);},  // 某个文件上传失败的回调allCompleteCallback: 'allCompleteCallback'// 全部上传完成时的回调//changeFlashHeight: 'changeFlashHeight'     // 改变Flash的高度,mode==1的时候才有用};return new baidu.flash.imageUploader(flashOptions);};
/***上传图片*/function upload(){flashObj.upload();};/*** 文件大小超出时的回调函数* @param   Object*/function exceedFileCallback(file){// 参数为Object,{index:在多图上传的索引号, name:文件名, size:文件大小}// 其中size单位为Byteconsole.log("文件超出大小限制:");console.log(file.index, file.name, file.size);console.log("===================================");};/*** 开始上传单个文件的回调函数* @param   Object*/function startUploadCallback(file){console.log("开始上传如下文件:");console.log(file.name, file.size);console.log("===================================");};/*** 单个文件上传完成的回调函数* @param   Object/String   服务端返回啥,参数就是啥*/function uploadCompleteCallback(data){//将url保存到用户信息上console.log("上传成功", data);console.log("===================================");};/*** 单个文件上传失败的回调函数* @param  Object/String   服务端返回啥,参数就是啥*/function uploadErrorCallback(data){console.log("上传失败", data);console.log("===================================");};/*** 全部上传完成的回调函数*/function allCompleteCallback(data){alert(data.message);};

最后上传图片调用upload()就可以了,是不是很简单呢!

将UEditor的图片批量上传抠出来单独使用相关推荐

  1. ajax 批量上传图片插件,TinyMCE多图片批量上传(Ajax)教程

    需要用上插件:axupimgs 插件作者:莫若卿 支持版本:5.0.4+ 支持语言:仅中文 插件版本:1.6 一.axupimgs 插件作用: 这是一个tinymce多图片批量上传插件,支持拖拽文件添 ...

  2. Android 图片 批量上传,移动端图片批量上传问题

    一.操作系统 1.ios ios的操作系统: 实现图片批量上传,可以直接使用input  type=file 加上multiple 就可以实现,至于有些图片显示有问题可以通过 new FileRead ...

  3. 分享一个图片管理程序,图片批量上传,图片管理(有图片)

    呵呵,好久没写博客了.今天在此奉上一篇! 关于图片管理,其实做项目很多地方都用到图片管理. 比如:产品图片,新闻图片,作品图片. 现分享一篇关于图片管理的文章,希望大家能用得上. 先来看效果图吧: 上 ...

  4. php图片批量上传插件下载,jQuery的多图片批量上传插件

    jQuery的多图片批量上传插件 js代码 $(function(){ //上传图片 var $tgaUpload = $('#goodsUpload').diyUpload({ url:'uploa ...

  5. jQuery图片批量上传插件源码,支持批量上传、预览、删除、放大,可配置上传数量、上传大小、追加方式,含详细使用文档

    jQuery图片批量上传插件源码,支持批量上传.预览.删除.放大,可配置上传数量.上传大小.追加方式,含详细使用文档 程序包内含使用Demo 完整程序源代码:jQuery图片批量上传插件源码 上传前 ...

  6. JCK Editor 结合jQuery Upload File 增加图片批量上传功能

    项目需准备文件: jQuery File Upload 上传插件,下载地址:https://github.com/JennerZhang/jQuery-File-Upload Joomla JFUpl ...

  7. php图片批量上传插件下载,vue.js图片批量上传插件

    vue.js图片批量上传插件是一款基于vue.js框架的图片上传控件,适用于手机端的图片上传代码,支持批量上传,拖到图片上传,显示文件数量和大小等功能 js代码 // import up from ' ...

  8. 解决KindEditor无法安装flash插件实现图片批量上传

    由于现在无法下载使用flash插件,导致KindEditor有的功能丧失,无法使用,本文主要解决图片无法批量上传的问题. 由于公司项目是混编项目,比较老旧且业务复杂,使用KindEditor的地方较多 ...

  9. jQuery图片批量上传插件

    下载地址 jQuery图片批量上传网页插件,可以实现上传图片预览拖拽排序,编辑图片功能支持多个多图上传功能特效. dd:

最新文章

  1. 国嵌Linux配置编译视频截图版
  2. android 之 使用显示意图和隐式意图完成Activity的跳转
  3. VS2017-VC++校验和计算小工具
  4. Java的不同版本:J2SE、J2EE、J2ME的区别
  5. Oracle 原理:游标,显示游标、隐式游标、参照游标
  6. 第一个Android工程HelloAndroid
  7. postgresql中装gis插件_使用PostGIS_高级扩展插件使用_开发进阶_云原生数仓 AnalyticDB PostgreSQL - 阿里云...
  8. linux安装memcached(不错)
  9. Servlet容器原型(三)——Tomcat 4默认连接器浅谈
  10. [深入学习C#]输入输出安全性——可变类型形參列表的变化安全性
  11. CentOS7连接无线网络
  12. 动手实现图像双线性插值——实现图像resize
  13. vue的el-tree实现部门人员的tree展示选择,包括根据已有id进行默认选中设置
  14. Android面试题【高级工程师版】
  15. 导出Fbx和obj的工具
  16. 谷歌地图实现车辆位置实时跟踪
  17. sql 语句in 使用占位符
  18. kali修改用户名与密码
  19. 天地不仁,通货在膨胀
  20. [CC-TRIPS]Children Trips

热门文章

  1. C语言For循环实现“九九乘法表”
  2. 【游戏 AI】7 - AI 引擎
  3. (转载)Android花样Text,设置TextView的字体、颜色、超链接等
  4. 英语语法学习 第二章 两句的连接方法之 1连接符号,2并列连词
  5. 2023年全国最新道路运输从业人员精选真题及答案43
  6. Windows服务器修改默认远程端口(3389)
  7. 1265: [蓝桥杯2015决赛]四阶幻方 C/C++
  8. 阿里云RDS的主备切换
  9. 【苹果相册共享】推送群发安装软件1G内存 // Late 2011
  10. ubuntu16.04更改计算机名,设置 UBUNTU 16.04 的命令提示符(PS) 使其可以显示 完整的 主机名hostname...