今天在使用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. python3 执行AES加密方法

    cmd执行命令:pip install pycryptodome # -*- coding: utf-8 -*- # __author__ = 'Carry' import base64 from C ...

  2. Python学习---基础篇

    ###打开文件并打印: #!/usr/bin/python3 f = open('F://myproject/test.txt', encoding='utf-8',mode='r') content ...

  3. DAY4-Python学习笔记

    1.XML: 操作XML有两种方法:DOM和SAX DOM:把整个XML读入内存,解析为树,因此占用内存大,解析慢,优点是可以任意遍历树的节点 SAX:是流模式,边读边解析,占用内存小,解析快,缺点是 ...

  4. DSU模板(树的启发式合并)

    摘自Codeforces博客 With dsu on tree we can answer queries of this type: How many vertices in subtree of ...

  5. div + css 样式连接

    外部文件连接:<link rel ="stylesheet" type=""text/css" href="demo.css" ...

  6. Android Support WorkManager使用详解

    使用WorkManager调度任务 WorkManager是一个库, 用以将工作入队, 当该工作的约束条件得到满足之后, WorkManager保证它的执行. WorkManager允许观测工作的状态 ...

  7. Windows Shell远程执行代码漏洞((CVE-2018-8414)复现

    0x00   SettingContent-ms文件介绍 .SettingContent-ms是在Windows 10中引入的一种文件类型,它的内容是XML格式进行编写的,主要用于创建Windows设 ...

  8. 跟踪分析Linux内核的启动过程--20135334赵阳林

    解决ubuntu下make menuconfig错误问题 http://blog.sina.com.cn/s/blog_726684020100r1oo.html 安装好相关的软件之后,键入make ...

  9. 一次DS总结+一些闲话

    “只要你们搞懂这一轮……你们就可以……” 在zcy(或是xgg)来之前,hfu如是说. 但是…… “这一轮……可能是有一点……毕竟弄完了可以进……恩,我们的路还长啊!” 着实,也是.本人在xgg_na ...

  10. ALC662 在Mac中的安装

    最近在装黑苹果,一切还算顺利(整了两周),就是ICH7的ALC662一直无法驱动成功.经过两天的爬文,终于成功了.以下是我的一点经验. 我装的是最新的10.9.2,显卡驱动是自带的(我的显卡为GT62 ...