今天在使用layui的过程中,遇到了使用其上传文件的模块。自己感觉文件上传还是bootstrapfileinput插件比较好用一些,灵活方便,bootstrapfileinput使用方法参考:http://www.cnblogs.com/qlqwjy/p/8410413.html

  在使用layui的文件上传模块的时候想要携带额外的参数,在这里鼓捣了半天。。。真的是坑。在这里还是总结一下layui文件上传模块的使用方法。

1.页面准备文件上传的模态框:

<!--相关的几个模态框-->
<!--1 S 上传图片的模态框-->
<%--隐藏打开的index--%>
<input type="hidden" id="hidden_picture_index">
<div class="x-body" style="display: none" id="pictureModal">
<div class="layui-upload">
<!--隐藏培养方案编号-->
<input type="hidden" id="hidden_trainSchemeId">
<!--隐藏上传文件的操作-->
<input type="hidden" id="hidden_tmp_index">
<button type="button" class="layui-btn" id="structurePicture"><!--动态赋值--></button>
<!--预留一个预览的img标签-->
<div id="imgDiv" style="display: none;margin-top: 10px;">
<img id="imgPreview" width="400px" height="200px">
</div>
<div id="promptDiv" style="margin-top: 10px;display: none">
<p><font style="font-size: 30px">您还没有上传课程关系结构图,请先上传课程关系结构图!</font></p>
</div>
</div>
</div>
<!--1 E 上传图片的模态框-->

2.上传文件的JS

layui.use(['upload','layer'],function () {
var upload = layui.upload,layer = layui.layer;
//普通图片上传
var uploadInst = upload.render({
elem: '#structurePicture',//绑定的元素
url: contextPath+'/TrainPicture/uploadTrainPicture.do',//提交的url
auto:true,//是否自动上传
accept:"images",//指定允许上传的文件类型
multiple:false,//支持多文件上传
acceptMime:"image/*",//规定打开文件选择框时,筛选出的文件类型
/* data:{
trainningschemeid: $("#hidden_trainSchemeId").val()
},//额外携带的培养方案编号*/
before: function(obj){
this.data={"trainningschemeid": $("#hidden_trainSchemeId").val()}//携带额外的数据
//预读本地文件示例,不支持ie8
obj.preview(function(index, file, result){
$('#imgPreview').attr('src', result); //图片链接(base64)
});
var index = layer.load(); //开始上传之后打开load层
$("#hidden_tmp_index").val(index);//将load层的index隐藏到页面中
},
done: function(res, index, upload){ //假设code=0代表上传成功
layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
if(res.msg=="上传成功"){
//提示上传成功(关闭之后将按钮的内容变为更换图片)
layer.msg(res.msg, {icon: 1,time:2*1000},function () {
$("#structurePicture").text("更换主要课程关系结构图");//按钮标题置为上传图片
$("#promptDiv").css("display","none");//隐藏提示语
$("#imgDiv").css("display","");//显示图片框
});
} }
});
}) /*************E 上传培养方案课程结构图相关操作***************/

  data属性用于携带额外的参数,可是我带的参数总是""(空串)。后来查阅网上资料发现第二种解决办法就是在before文件上传的函数中动态设置上传的参数。例如上面的before函数。但是有的时候上面的data属性可以生效,有的时候却不生效。。。。。。所以在携带参数的时候需要参考上面两种方法看哪种生效。

注意:因为layui支持的格式默认为图片文件(JPG),在代码中添加accept:'file'。有时候不添加会警告 选择的图片中包含不支持的格式

3.接收文件的后台:(Java代码)

    @RequestMapping("/uploadTrainPicture")
public ResposeResult addTrainPicture(Trainpicture trainpicture, MultipartFile file){
//1.保存图片到本地
String fileoriname=null;//原名称
String filenowname=null;//系统生成的名称
if(file != null){
fileoriname = file.getOriginalFilename();//获取原名字
filenowname = UUIDUtil.getUUID2()+ "."+FilenameUtils.getExtension(fileoriname);//UUID生成新的唯一名字+文件扩展名
} try {
FileHandleUtil.uploadSpringMVCFile(file, "trainPicture", filenowname);
} catch (Exception e) {
logger.error("保存培养方案图片出错",e);
}
//2.调用service保存数据库
trainpicture.setPictureoriname(fileoriname);
trainpicture.setPicturenowname(filenowname);
trainpicture.setUptime(new Date());
ResposeResult resposeResult = new ResposeResult();
String result = null;
try {
result = trainPictureService.addTrainPicture(trainpicture)?"上传成功":"上传失败";
} catch (SQLException e) {
result = "上传失败";
logger.error("保存培养方案数据库出错",e);
}
resposeResult.setMsg(result);
return resposeResult;
}

  

  发现在使用bootstrapfileinput的多文件上传插件和layui的多文件上传插件的原理都是每次传一个文件,多个文件会访问多次,所以java的MultipartFile也不必用数组接收。

layui结合SpringMVC上传文件以及携带额外的参数上传文件的更多相关文章

  1. SpringMVC使用MultipartFile文件上传,多文件上传,带参数上传

    一.配置SpringMVC 二.单文件与多文件上传 三.多文件上传 四.带参数上传 一.配置SpringMVC 在spring.xml中配置: <!-- springmvc文件上传需要配置的节点 ...

  2. SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)

    读取Excale表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; ...

  3. 基于SpringMVC的文件(增删改查)上传、下载、更新、删除

    一.项目背景 摘要:最近一直在忙着项目的事,3个项目过去了,发现有一个共同的业务,那就是附件的处理,附件包括各种文档,当然还有图片等特殊文件,由于时间的关系,每次都是匆匆忙忙的搞定上线,称这项目的空档 ...

  4. linux使用curl上传文件并且同时携带其它传递参数

    一般使用linux原生态的命令curl上传文件时命令如下 假如要上传文件是myfile.txt curl -F "file_name=@myfile.txt" -X POST &q ...

  5. layui文件上传中如何先判断后再弹出文件选择框

    前言:layui中的上传,如何在点击上传按钮前阻止file的默认打开文件选择框呢?我想点击后先判断下,如果判断结果不符合,就直接弹出提示框,而不是文件选择框,判断符合才进行文件选择.但是在layui的 ...

  6. SpringMVC 参数映射与文件上传

    handler参数映射: 接下来就是Spring的各个处理细节了,无论框架如何疯转其实我们处理请求的流程是不变的,设计到的操作也是固定的,举个例子,当我们要实现一个登陆功能时: 创建一个用于处理登录请 ...

  7. element-ui upload上传文件并携带参数 使用formData对象

    需求:上传文件的时候,需要携带其他的参数 问题:使用upload上传文件时,必须使用formData对象,而其他的参数通过data获取的到的,formData和data是不能同时传输的 解决:获取到的 ...

  8. SpringMVC入门一:基础知识(依赖、注解、文件上传/下载、拦截器、异常处理等)

    为了使Spring可插入MVC架构,SpringFrameWork在Spring基础上开发SpringMVC框架,从而使用Spring进行WEB开发时可以选择使用Spring的SpringMVC框架作 ...

  9. SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片

    SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片   在上一篇文章中,我们介绍了< SpringMVC上传图片的常规上传方法 >.本文接着第一 ...

随机推荐

  1. oracle表空间到32G后扩容

    ), ) total_space FROM dba_data_files ORDER BY tablespace_name; /*查看表空间的使用情况*/ select a.a1 表空间名称, tru ...

  2. Qt——线程类QThread

    本文主要介绍Qt中线程类QThread的用法,参考(翻译+修改)了一篇文章:PyQt: Threading Basics Tutorial,虽然使用的是PyQt,但与C++中Qt的用法大同小异,不必太 ...

  3. spring接收json字符串的两种方式

    一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...

  4. Alpha 冲刺 —— 十分之六

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 测试服务器并行能力 学习MSI.CUDA ...

  5. Mininet 系列实验(五)

    实验内容 实现一个单个交换机的拓扑,添加一个交换机,和N个主机到网络中.交换机和主机之间的每个链路能够设置带宽.延迟时间.以及丢包率.创建一个包含一个交换机和四个主机的网络,使用iperf测试主机之间 ...

  6. 【ARC077F】SS

    Description 如果某个串可以由两个一样的串前后连接得到,我们就称之为"偶串".比如说"xyzxyz"和"aaaaaa"是偶串,而& ...

  7. 《Linux内核设计与实现》第17章读书笔记

    第十七章  设备与模块 一.四种内核成分 设备类型:在所有 Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对象:内核数据结构中支 ...

  8. AS可视化布局中文乱码

    求助android studio 的可视化布局中文乱码-CSDN论坛-CSDN.NET-中国最大的IT技术社区http://bbs.csdn.net/topics/391887442 Android ...

  9. android studio 怎么做屏幕适配?

    一.关于布局适配建议1.不要使用绝对布局2.尽量使用match_parent 而不是fill_parent .3.能够使用权重的地方尽量使用权重(android:layout_weight)4.如果是 ...

  10. 解题:BZOJ 2673 World Final 2011 Chips Challenge

    题面 数据范围看起来很像网络流诶(滚那 因为限制多而且强,数据范围也不大,我们考虑不直接求答案,而是转化为判定问题 可以发现第二个限制相对好满足,我们直接枚举这个限制就可以.具体来说是枚举所有行中的最 ...