Jfinal +百度WebUploader组件实现多图片上传实例
百度 Web Uploader文档的getting-started文档说明太简单,没有写全,在这里给大家补全(
$list会报没有定义,文档中确实没给定义
)
效果:
有用部分
外部jar包
jfinal-2.0-bin-with-src.jar(JFinal核心包)
fastjson-1.2.7.jar(用于json数据的处理)
cos-26Dec2008.jar(支持JFinal自带的上传功能)
1. 引入 css,js外部文件
<link id="bscss" href="${root}/bootstrap/css/bootstrap.css" rel="stylesheet"> <link rel="stylesheet" type="text/css" href="${root!}/webUploader/webuploader.css"> <link rel="stylesheet" type="text/css" href="${root!}/webUploader/style.css"><!--从官网下载的实例中有 --> <script src="${root!}/resource/front/js/jquery-1.9.1.min.js" type="text/javascript"></script> <script src="${root}/bootstrap/js/bootstrap.js" type="text/javascript"></script> <script type="text/javascript"> var BASE_URL = '${root!}/webUploader'; </script> <script src="${root!}/webUploader/webuploader.js"></script>
2.页面部分,写容器dom
用来放置webuploader的dom
<div id="uploader-demo"> <!--用来存放item--> <div id="fileList" class="uploader-list"></div> <div id="filePicker">选择图片</div> </div>
3.JS部分, 初始化webuploader组件,设置上传等事件监听。
<script type="text/javascript"> $(function() { var $list = $("#fileList"); //这几个初始化全局的百度文档上没说明,气的肝疼。 //var $btn = $("#ctlBtn"); //开始上传 var thumbnailWidth = 100; //缩略图高度和宽度 (单位是像素),当宽高度是0~1的时候,是按照百分比计算,具体可以看api文档 var thumbnailHeight = 100; // 初始化Web Uploader var uploader = WebUploader.create({ // 选完文件后,是否自动上传。 auto : true, // swf文件路径 swf : BASE_URL + '/Uploader.swf', // 文件接收服务端。 server : '${root!}/check/uploads/111', // 选择文件的按钮。可选。 // 内部根据当前运行是创建,可能是input元素,也可能是flash. pick : '#filePicker', // 只允许选择图片文件。 accept : { title : 'Images', extensions : 'gif,jpg,jpeg,bmp,png', mimeTypes : 'image/*' } }); // 当有文件添加进来的时候 uploader.on( 'fileQueued', function(file) { var $li = $('<div id="' + file.id + '" class="file-item thumbnail">' + '<img>' + '<div class="info">' + file.name + '</div>' + '</div>'), $img = $li.find('img'); // $list为容器jQuery实例 $list.append($li); // 创建缩略图 // 如果为非图片文件,可以不用调用此方法。 // thumbnailWidth x thumbnailHeight 为 100 x 100 uploader.makeThumb(file, function(error, src) { if (error) { $img.replaceWith('<span>不能预览</span>'); return; } $img.attr('src', src); }, thumbnailWidth, thumbnailHeight); }); // 文件上传过程中创建进度条实时显示。 uploader.on('uploadProgress', function(file, percentage) { var $li = $('#' + file.id), $percent = $li.find('.progress span'); // 避免重复创建 if (!$percent.length) { $percent = $('<p class="progress"><span></span></p>').appendTo( $li).find('span'); } $percent.css('width', percentage * 100 + '%'); }); // 文件上传成功,给item添加成功class, 用样式标记上传成功。 uploader.on('uploadSuccess', function(file) { $('#' + file.id).addClass('upload-state-done'); }); // 文件上传失败,显示上传出错。 uploader.on('uploadError', function(file) { var $li = $('#' + file.id), $error = $li.find('div.error'); // 避免重复创建 if (!$error.length) { $error = $('<div class="error"></div>').appendTo($li); } $error.text('上传失败'); }); // 完成上传完了,成功或者失败,先删除进度条。 uploader.on('uploadComplete', function(file) { $('#' + file.id).find('.progress').remove(); }); }); </script>
4. 后台部分,获取文件
public class CheckController extends Controller{ /** * 上传附件 */ public void uploads() { String uuid = getPara(); // 上传代码 UploadFile uf = getFile("file","check");//获得文件及设置其保存路径。file,默认的name;check,图片保存的路径 String fileName=uf.getFileName(); //获得到了端口 String url ="/upload/check/"+uf.getFileName(); SpotFile spotFile = new SpotFile(); spotFile.setSpot_id(uuid); spotFile.setUrl(url); spotFile.setName(fileName); spotFile .save(); setAttr("fileName",fileName); setAttr("uuid",uuid); renderJson(); } }
本文原创,转载必追究版权。