Java开发 | SSM+Layui实现文件上传服务器

之前的项目涉及到图片上传的功能,基于bootstrap和SSM框架实现了该功能,这次在对项目进行Layui化过程中,需要将这个功能进行替换,以下记录Layui+SSM完成文件上传到服务器的操作。
效果图
前台html
①、设置img标签,设定id为‘demo1’;
②、p标签用于在上传失败的时候,显示重新上传按钮;
③、button按钮,设置id为‘test1’,后续监控该按钮。
前台JS文件
①、引入Layui.js文件;
②、引入Layui的upload模块;
①、elem绑定上传图片按钮的id——‘test1’;
②、accept设置接收的文件类型;
③、before预读文件,显示在网页上,需要注意的是不支持ie8,另外,result实际为图片的base64码
④、done为后台后台返回值,需要注意的是,后台返回来的需要是json格式的map(在Java代码会标记出来)
⑤、error为连接错误,实现重传操作。
Java实现上传文件必备jar包
commons-io.jar和commons-fileupload.jar为实现文件上传的必备jar,更高版本可去maven中央仓库查找。
配置文件设置
实现文件上传还需要在springmvc-config.xml中配置一下文件上传大小限定、字节码等
代码实现
使用MultipartFile来接收前台传过来的文件,记得设置@RequestParam("file")。其中file我没有找到关于它的说明,这个和bootstrap的文件上传有区别。
返回值需要使用第二个红框内的格式,当然其他的也可以,只要它符合json格式即可。
通过ImgUtil的imgToBase64将图片转化为byte[],调用insertImg方法到dao层,插入到数据库中。
①实体类中images接受的是图片转化的byte[],但是需要用Object来接受,方便类型转化。
数据库存储
我这里用的是SQL server2012,在数据库中直接用image类型来存放图片转化的byte[],其他的数据库使用的类型有差异,需要自行摸索。
文件上传存放方式
文件上传到服务器的存放方式拿图片来说,一般两种方式:
①、将图片上传的服务器上,存放到硬盘的某一个文件夹中,然后将路径存放到数据库中,需要访问图片的时候,直接获取路径即可。这种存放方式在读取时,需要给tomcat配置虚拟路径,指向该文件夹,否则无法正常访问到图片
②、将图片解析成byte[]字节码,直接存入到数据库中,读取的时候将字节码还原,返回前台即可显示。本篇文章的需求,考虑到一般上传的图片不大,使用不频繁,采用这种直接存入数据库的方式。