媒体信息布局展现、添加和后台处理
2018-02-01 17:14
218 查看
一、需求
二、工具
(一)WebUploader
(二) bootstrap FileInput
三、功能点 1.后端传入模型层当前已有的图片和视频信息。 2.前端通过td的colspan填充信息数量变量,然后通过[#list]方法遍历信息填充出已有信息div 四、示例
(一) 用户点击轮播链接,url映射的处理器方法
(二) 界面edit.ftl[align=left] 1.图片展现 [/align]<tr>
<th><p><span>轮播图片</span></p></th>
//将根据后台返回的图片数量决定当前图片列表
<td colspan="${articleImages?size}" class="img_box">
[#list articleImages as articleImage]
<div id="u3234" style="padding:10px;float:left;" class="img_parents">
<img style="width:80px;height:80px;" id="u3234_img" class="img" src="${articleImage.imagePath}"/>
<div id="u3242" class="ax_default label" style="height:28px;">
<p style="float:left; margin:0 10px;"><span>编辑</span></p>
<p style="float:left;"<span class="delete_img">删除</span></p>
</div>
</div>
[/#list]
<div style="float:left;margin:10px;position:relative;">
<span class="fieldSet add_img" style="width:78px;height:78px;border:1px solid #cecece;color:blue;line-height:78px;font-size:16px;text-align:center;display:block;">添加图片</span>
</div>
</td>
</tr>
<input type="file" style="position:absolute;left:0px;top:0px;width:80px;height:80px;opacity:0;">
2.添加图片弹出层
3.图片添加处理 1)增加:前端展现出增加会话框,提交增加媒体列,并将媒体提交后台
在common.js创建Web Uploader实例
webUploader.on('beforeFileQueued', function(file) {if ($.isFunction(settings.before) && settings.before.call(element, file) === false) {return false;}if ($.trim(settings.extensions) == '') {this.trigger('error', 'Q_TYPE_DENIED');return false;}this.reset();$progressBar.show();})
文件上传状态提示
文件上传成功或者失败事件
webUploader.on('uploadAccept', function(file, data) {$progressBar.fadeOut("slow", function() {$progressBar.width(0);});if (data.message.type != 'success') {$.message(data.message);return false;}$.message("success", "上传成功");$element.prev("input:text").val(data.url);//将input的text值填充上传文件地址var pid = data.url.replace(/.*\/([^\/]*)\.(.*)/g,"$1").replace(/-/g,"1");//上传文件识别码 $element.prev("input:text").attr("objectId",pid);$element.siblings("div").find("img").attr("src",data.url);//预览图片var length=$element.closest(".fuj").children('span').length;var a=length==0?"fujian":"fujian2";$element.closest(".fuj").append( '<span class="'+a+'">附件'+(length+1)+'<span class="icon_fj"></span> '+'<input type="hidden" name="files" value="'+data.url+'" />'+ '</span>');$(".icon_fj").click(function(){$(this).parent("span").remove(); });if ($.isFunction(settings.complete)) {settings.complete.call(element, file, data);}}).on('error', function(type) {switch(type) { case "F_EXCEED_SIZE": $.message("warn", "${message("admin.upload.sizeInvalid")}"); break; case "Q_TYPE_DENIED": $.message("warn", "${message("admin.upload.typeInvalid")}");break; default:$.message("warn", "${message("admin.upload.error")}");}});(四) 持久化
五、总结
二、工具
(一)WebUploader
(二) bootstrap FileInput
三、功能点 1.后端传入模型层当前已有的图片和视频信息。 2.前端通过td的colspan填充信息数量变量,然后通过[#list]方法遍历信息填充出已有信息div 四、示例
(一) 用户点击轮播链接,url映射的处理器方法
@RequestMapping(value = "/edit", method = RequestMethod.GET) public String edit(Long id, ModelMap model) { model.addAttribute("articleCategoryTree", navigationService.findTree(distinguishType,false)); model.addAttribute("tags", tagService.findList(Tag.Type.article)); model.addAttribute("article", articleService.find(id)); model.addAttribute("articleImages", articleImageService.findList(id));//存储的图片 model.addAttribute("articleVideos", articleVideoService.findList(id));//存储的视频 model.addAttribute("regions", regionService.findAll()); //legend update1 return "/admin/web/article/new/edit"; }
(二) 界面edit.ftl[align=left] 1.图片展现 [/align]<tr>
<th><p><span>轮播图片</span></p></th>
//将根据后台返回的图片数量决定当前图片列表
<td colspan="${articleImages?size}" class="img_box">
[#list articleImages as articleImage]
<div id="u3234" style="padding:10px;float:left;" class="img_parents">
<img style="width:80px;height:80px;" id="u3234_img" class="img" src="${articleImage.imagePath}"/>
<div id="u3242" class="ax_default label" style="height:28px;">
<p style="float:left; margin:0 10px;"><span>编辑</span></p>
<p style="float:left;"<span class="delete_img">删除</span></p>
</div>
</div>
[/#list]
<div style="float:left;margin:10px;position:relative;">
<span class="fieldSet add_img" style="width:78px;height:78px;border:1px solid #cecece;color:blue;line-height:78px;font-size:16px;text-align:center;display:block;">添加图片</span>
</div>
</td>
</tr>
<input type="file" style="position:absolute;left:0px;top:0px;width:80px;height:80px;opacity:0;">
2.添加图片弹出层
<div class="dialog_img" style="border:1px solid #666;display:none;width:320px;height:130px;position:fixed;left:50%;top:50%;margin-left:-260px;margin-top:-200px;background:#fff;padding:20px;z-index:999;"> <div style="height:70px;margin-top:20px;"> <p style="float:left;line-height:32px;width:60px;text-align:right;padding-right:10px;">选择图片</p> <div style="float:left;height:70px;" class="img_parent"> <input id="imgputId" type="text" style="width:130px;height:20px;display:block;float:left;margin:0 10px;" name="imagePath" value="" class="text img_input" disabled="readOnly" maxlength="200" title="${message("admin.goods.imageTitle")}"/> <a href="javascript:;" class="button filePicker">上传图片</a> </div> </div> <div style="height:26px;margin-top:10px;"> <div class="btn_success_img" style="float:left;height:26px;width:60px;text-align:center;line-height:26px;background:#cc020b;color:#fff;margin-left:86px;margin-right:20px;">提交</div> <div class="btn_error_img" style="float:left;height:24px;width:58px;border:1px solid #c8c8c8;text-align:center;line-height:24px;background:#fff;color:#bbb;margin-right:30px;">取消 </div> </div> </div>
3.图片添加处理 1)增加:前端展现出增加会话框,提交增加媒体列,并将媒体提交后台
<script> $(".add_img").click(function(){ $(".dialog_img").css("display","block"); $('#imgputId').val(''); }) $(".btn_error_img").click(function(){ $(".dialog_img").css("display","none"); }) $(".btn_success_img").click(function(){ var a = $(this).parents(".dialog_img").find(".img_input").attr("value"); var pid = $(this).parents(".dialog_img").find(".img_input").attr("objectId"); console.log("ddd:" + pid); if(a == null){ return; }else{ //var inputPath = a.replace(/\\/g,"/"); //var inputPath = a.replace(/\\/g,"/").replace(/e:\/upload\/ssl/,"/file"); console.log(inputPath); console.log("url1:" + "'${setting.backstageUrl}'"); var inputPath = a; var html = ""; html = '<div id="u3239" style="padding:10px;float:left;" class="img_parents">' +'<img style="width:80px;height:80px;" class="img " ' + 'id="' + pid +'" src="' + inputPath +'"/>' +'<div id="u3242" class="ax_default label" style="height:28px;">' +'<p style="float:left;margin:0 10px;"><span>编辑</span></p><p style="float:left;"><span class="delete_img">删除</span></p>' +'</div>' +'</div>'; $(".img_box").prepend(html); $.ajax({ url: '${setting.backstageUrl}/admin//webArticle/saveImage.jhtml', type: "POST", data: { image_path: inputPath,article_id:${article.id},title:pid}, dataType: "json", async: true, cache: false, success: function(data) { if (data.message.type == "success") { $(".dialog_img").css("display","none"); }else{ $(".dialog_img").css("display","none"); } } }); } }) </script>2)删除 ,删除展现的媒体列,后台删除媒体数据
<script> $(".img_box").on("click",".delete_img",function(){ var $this = this; var path = $($this).parents('.img_parents').find('img').attr("src"); var pid = $($this).parents('.img_parents').find('img').attr("id"); //var path = $($this).parents('.img_parents').find('img').attr("src").replace(/\/file/,"e:\\upload\\ssl") console.log(path); //$($this).parents(".img_parents").remove(); $.ajax({ url: '${setting.backstageUrl}/admin/webArticle/deleteImage.jhtml', type: "POST", data: {title:pid}, dataType: "json", async: true, cache: false, success: function(data) { if (data.message.type == "success") { if($($this).parents(".img_parents") != null) $($this).parents(".img_parents").remove(); }else{ if($($this).parents(".img_parents") != null) $($this).parents(".img_parents").remove(); } } }); }) </script>3)文件上传(采用插件webuploader) <script type="text/javascript" src="${setting.backstageUrl}/resources/admin/js/webuploader.js"></script><script type="text/javascript" src="${setting.backstageUrl}/resources/admin/js/common.js"></script><script type="text/javascript"> $().ready(function() { var $filePicker = $("a.filePicker"); $filePicker.uploader(); $("a.videoImagePicker").uploader({fileTypes:"image"}); $("a.videoPicker").uploader({fileTypes:"media"}); }</script>
在common.js创建Web Uploader实例
var webUploader = WebUploader.create({ swf: '${setting.backstageUrl}/resources/admin/flash/webuploader.swf', server: settings.url + (settings.url.indexOf('?') < 0 ? '?' : '&') + 'fileType=' + settings.fileType + '&ftype='+opts.type +'&adId='+opts.adId+'&commercialTenant='+opts.commercialTenant+'&token=' + getCookie("token"), pick: { id: element, multiple: false }, fileVal: settings.fileName, formData: settings.data, fileSingleSizeLimit: settings.maxSize * 1024 * 1024 * 1024, accept: { extensions: settings.extensions }, fileNumLimit: 1, auto: true })接着监听fileQueued事件,即当有文件添加进来的时候,展示进度条进度
webUploader.on('beforeFileQueued', function(file) {if ($.isFunction(settings.before) && settings.before.call(element, file) === false) {return false;}if ($.trim(settings.extensions) == '') {this.trigger('error', 'Q_TYPE_DENIED');return false;}this.reset();$progressBar.show();})
文件上传状态提示
webUploader.on('uploadProgress', function(file, percentage) { $progressBar.width(percentage * 100 + '%'); })
文件上传成功或者失败事件
webUploader.on('uploadAccept', function(file, data) {$progressBar.fadeOut("slow", function() {$progressBar.width(0);});if (data.message.type != 'success') {$.message(data.message);return false;}$.message("success", "上传成功");$element.prev("input:text").val(data.url);//将input的text值填充上传文件地址var pid = data.url.replace(/.*\/([^\/]*)\.(.*)/g,"$1").replace(/-/g,"1");//上传文件识别码 $element.prev("input:text").attr("objectId",pid);$element.siblings("div").find("img").attr("src",data.url);//预览图片var length=$element.closest(".fuj").children('span').length;var a=length==0?"fujian":"fujian2";$element.closest(".fuj").append( '<span class="'+a+'">附件'+(length+1)+'<span class="icon_fj"></span> '+'<input type="hidden" name="files" value="'+data.url+'" />'+ '</span>');$(".icon_fj").click(function(){$(this).parent("span").remove(); });if ($.isFunction(settings.complete)) {settings.complete.call(element, file, data);}}).on('error', function(type) {switch(type) { case "F_EXCEED_SIZE": $.message("warn", "${message("admin.upload.sizeInvalid")}"); break; case "Q_TYPE_DENIED": $.message("warn", "${message("admin.upload.typeInvalid")}");break; default:$.message("warn", "${message("admin.upload.error")}");}});(四) 持久化
五、总结
相关文章推荐
- 一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(6)--添加控件到Flight Delay表单
- ecshop后台商品列表添加自定义方法 例如添加商品提醒信息
- android源码解析(1)--如何处理布局文件中添加的点击事件
- 在GridView在添加最后一行的总计一列,怎么把6个零变成3个零,在后台处理
- 自定义android RadioButton View,添加较为灵活的布局处理方式
- 关于ExtJS的工具栏动态添加按钮(从后台数据库读取信息)
- 一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(7)--添加含规则的提交按钮到Flight Delay表单
- 网站后台只能显示数据库信息 不能更改删除添加信息
- 添加打印机,本地打印后台处理程序服务没有运行
- Android 处理极光推送 后台传过来的信息
- 注册功能实现后台数据库添加用户信息
- 一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(7)--添加含规则的提交按钮到Flight Delay表单
- ListView的添加不同布局的item,缓存处理方法
- C# 后台添加Log信息
- 后台动态添加布局文件、控件与动态设置属性2
- windows7添加打印机时,提示“本地打印机后台处理程序服务没有运行”
- android 程序漰溃 后台handle处理类 并反馈崩溃信息
- wordpress后台上传主题插件提示需要输入FTP信息如何处理?
- 关于从后台传来的json数据,使用jquery动态展现所有的item,给每个item添加删除功能
- 后台动态添加布局文件、控件与动态设置属性