Layui框架实现图片上传

前言:

一直以来,图片上传总是件很麻烦的事。最近在学layui,发现layui真是极大简化了各种复杂的操作,避免了繁琐的开发。
layui图片上传和传统的图片上传不同,它并不予表单元素并存,而是单独通过异步来上传到后端,继而进行之后的操作。所以,编写表单代码时,并不需要添加enctype=“multipart/form-data” 和 input type=“file” 相关组件了,直接写最原始的表单就行。

附上完整demo:https://github.com/BraisedPanda/StudentSystem2.5
demo里面新建人员中有图片导入功能,static下的sql文件夹里有完整的数据库表和测试数据,登录界面登录名:zhangsan 密码:123

前端代码:

<form class="layui-form" action="/add_user" method="post"><div class="layui-form-item"><label class="layui-form-label">用户名:</label><div class="layui-input-block"><input type="text" name="username" lay-verify="username"   placeholder="填写用户名" autocomplete="off" class="layui-input username"></div></div><div class="layui-form-item"><label class="layui-form-label">密码:</label><div class="layui-input-block"><input type="text" name="password" lay-verify="password"  placeholder="请填写6到12位密码" autocomplete="off" class="layui-input password"></div></div><div class="layui-form-item"><label class="layui-form-label ">性别:</label><div class="layui-input-block"><input type="radio" name="gender" value="man" title="男" checked=""><input type="radio" name="gender" value="woman" title="女"></div></div><!--************这里是上传图片的代码***************--><!--************这里添加的隐藏的输入框,用来传递images的参数***************--><input type="hidden" name="images" class="image"><div class="layui-form-item"><label class="layui-form-label ">照片:</label><div class="layui-upload"><button type="button" class="layui-btn" id="test1">上传图片</button><div class="layui-upload-list"><img class="layui-upload-img" id="demo1"><p id="demoText"></p></div></div></div><!--************上面里是上传图片的代码***************--><br><div class="layui-form-item"><div class="layui-input-block"><button class="layui-btn layui-btn-radius layui-btn-normal" lay-submit="" lay-filter="demo1">修改</button>&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<button type="reset" class="layui-btn layui-btn-radius  layui-btn-danger">重置</button></div></div><br>
</form>

tips:

1、白色的是隐藏的输入框,用来传递images的src地址的,因为图片不同于表单一起传数据,所以只能借助js代码来绑定参数
2、黄色框子里就是上传图片的组件了,可以把它夹在form表单中

js代码

<script>layui.use('upload', function(){var $ = layui.jquery,upload = layui.upload;//普通图片上传var uploadInst = upload.render({elem: '#test1',url: '/upload/',accept:'images',size:50000,before: function(obj){obj.preview(function(index, file, result){$('#demo1').attr('src', result);});},done: function(res){//如果上传失败if(res.code > 0){return layer.msg('上传失败');}//上传成功var demoText = $('#demoText');demoText.html('<span style="color: #4cae4c;">上传成功</span>');var fileupload = $(".image");fileupload.attr("value",res.data.src);console.log(fileupload.attr("value"));},error: function(){//演示失败状态,并实现重传var demoText = $('#demoText');demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');demoText.find('.demo-reload').on('click', function(){uploadInst.upload();});}});});
</script>

tips

1、js代码重点是黄色框子里的内容
fileupload.attr(“value”,res.data.src);
res.data.src是获取后端传过来的图片的url,之后给表单的隐藏图片输入框赋值即可。

后端代码:

 //图片上传测试@ResponseBody@RequestMapping("upload")public Map upload(MultipartFile file,HttpServletRequest request){String prefix="";String dateStr="";//保存上传OutputStream out = null;InputStream fileInput=null;try{if(file!=null){String originalName = file.getOriginalFilename();prefix=originalName.substring(originalName.lastIndexOf(".")+1);Date date = new Date();String uuid = UUID.randomUUID()+"";SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");dateStr = simpleDateFormat.format(date);String filepath = "D:\\mycode\\LayUiTest\\src\\main\\resources\\static\\images\\" + dateStr+"\\"+uuid+"." + prefix;File files=new File(filepath);//打印查看上传路径System.out.println(filepath);if(!files.getParentFile().exists()){files.getParentFile().mkdirs();}file.transferTo(files);Map<String,Object> map2=new HashMap<>();Map<String,Object> map=new HashMap<>();map.put("code",0);map.put("msg","");map.put("data",map2);map2.put("src","/images/"+ dateStr+"/"+uuid+"." + prefix);return map;}}catch (Exception e){}finally{try {if(out!=null){out.close();}if(fileInput!=null){fileInput.close();}} catch (IOException e) {}}Map<String,Object> map=new HashMap<>();map.put("code",1);map.put("msg","");return map;}

tips:
1、后端代码就按照以前传统的图片上传代码来写就行,唯一区别的就是向前端传一个json串,json串里包括图片的url地址

这样,整个流程就完成了,其中最关键的就是后端代码了。
流程:图片先自己上传到后端
——》后端存储图片,并把存储地址给前端
——》前端的js代码获取到后端传来的图片存储地址,把这个url赋值给表单中的隐藏的图片输入项
——》图片输入框中有了地址,并随着表单其他内容一起提交~

效果展示:

前端页面:

数据库:

详细见官方文档:https://www.layui.com/doc/modules/upload.html

前面的demo内容预览

预览

登录界面

学生列表

班级列表

添加学生

我的考试成绩

各班级考试成绩

所有角色一览

各角色对应的权限

新建权限角色(可定制可观看的菜单和对应的操作按钮)

授予某个用户权限

Layui框架实现图片上传相关推荐

  1. layUI框架中文件上传前后端交互及遇到的相关问题

    下面我将讲述一下我在使用layUI框架中文件上传所遇到的问题: 前端jsp页面: <div class="layui-form-item"> <label cla ...

  2. python修改图片大小为30kb_Python的Tornado框架实现图片上传及图片大小修改

    图片的上传 上传图片使用了表单提交, 下面是html部分, enctype="multipart/form-data"表示不对字节进行编码,上传文件类型时需指定. input标签的 ...

  3. Bootstrap框架----单张图片上传实现---Uploadify插件

    框架搭建 我们在之前的文章中已经实现了 单张图片的上传,使用的是最基本的 File类型的input提交的方式,上传到远程静态资源器和七牛云. 之前的文章关注的地方 主要是后端,也就是图片上传保存到哪里 ...

  4. ssm上传文件获取路径_ssm框架实现图片上传显示并保存地址到数据库(示例代码)...

    本案例是通过springmvc+spring+mybatis框架以商品上传为例,实现的图片上传功能,并把图片的地址保存到数据库并在前台显示上传的图片. 本项目是使用maven搭建的项目,首先看下项目结 ...

  5. Django框架实现图片上传,存储和显示功能

    在django框架中,前端页面不能直接使用相对路径或绝对路径显示图片,需要通过urls.py来提供每个URL 对应的django的函数来显示在页面 . 思路:将form表单上传的文件,后台接受后创建文 ...

  6. 商城项目笔记一:搭建Maven工程,利用Dubbo实现SOA面向服务框架,部署zookeeper注册中心,FastDFS框架实现图片上传,部署nginx服务器。

    文章目录 1. 商城项目总结笔记: 1.1. 第一天工作记录:搭建Maven工程 1.2. 第二天工作记录:创建SOA面向服务架构,通过工具类实现分页技术 1.3. 第三天工作记录:部署nginx服务 ...

  7. spring框架的图片上传

    使用MultipartFile实现图片上传 MultipartFile为org.springframework.web.mutipart包下的一个类是spring框架为我们提供的, 我们就使用它来完成 ...

  8. SSM框架实现图片上传并查询数据库中的图片(多图片上传请看下篇博客)

    第一步:首先要在我们的springMVC.xml文件中添加上传文件解析器 <!-- 定义文件上传解析器 --> <bean id="multipartResolver&qu ...

  9. 使用python flask框架开发图片上传接口 详细案例

    python版本:3.6+ 需要模块:flask,pillow 需求:开发一个支持多格式图片上传的接口,并且将图片压缩,支持在线预览图片. 目录结构: app.py编辑内容: from flask i ...

最新文章

  1. sharepoint自带JS函数获取URL参数
  2. main函数与命令行参数
  3. mysql不支持union_Mysql中Union的子句不支持order by
  4. 时间序列分析之:傅里叶变换找周期
  5. 目前银行利息高还是余额宝利息高?如何选择?
  6. 20165235 Java第一周学习总结
  7. 通过Katas进行Java教程:网球比赛(轻松)
  8. 【渝粤教育】国家开放大学2018年春季 0689-22T老年心理健康 参考试题
  9. data 谷歌浏览器更改user 路径_Chrome浏览器自定义设置个人信息存储路径
  10. IJCAI 2021 | 腾讯和复旦联合出品:Adv-Makeup人脸黑盒攻击对抗算法
  11. 电子商务入门、实操、行业分析及公司案例等精彩系列问答有哪些?
  12. vs2015安装msdn_vs2015中文旗舰版下载
  13. logistic回归分析优点_SPSS统计分析全解析Logistic回归(逻辑回归)
  14. 泰勒公式的展开细节解析
  15. 章节十六:复习与反爬虫
  16. word导航栏 字体大小修改
  17. 【CJOJ P1096】最佳老农
  18. Seaborn 各种图形绘制
  19. 2021年中国盾构机行业发展现状分析,打破垄断,国产企业占比全球市场份额70%「图」
  20. JUnit4: java.lang.Exception: No tests found matching

热门文章

  1. [转] 使用 DHTML 与 XML 制作 Ajax 幻灯片
  2. Mybatis三剑客
  3. python 实现RFID串口数据读取
  4. 算法细节系列(16):深度优先搜索
  5. 将音频转化为MP3格式(lame库)
  6. LeetCode 1658. 将 x 减到 0 的最小操作数
  7. 找规律万能公式_数列找规律万能公式.doc
  8. 管理咨询的甲方和乙方
  9. 联想服务器TS130主板芯片组,【ThinkServer TS130参数】ThinkServer TS130系列服务器参数-ZOL中关村在线...
  10. vuepress的初始化中的heroImage在哪