博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSM如何实现上传单图片
阅读量:3890 次
发布时间:2019-05-23

本文共 2626 字,大约阅读时间需要 8 分钟。

实现原理:

前台通过input标签的file属性上传到后台,后台读取图片文件,将其存储在项目内部文件夹中,最后再将图片名存入到数据库中。

 

具体实现:

首先,要实现前台图片上传,必须要在form表单上设置method="post" 和enctype="multipart/form-data",并将图片上传的input标签的type选为file属性。具体实现代码如下

酒店数据管理

 接着,我们得先配置两个jar包,commons-fileupload和commons-io以用来处理上传到springmvc的图片,我是通过maven来导入jar包的,这是maven的代码段:

commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4

然后,上传spring的准备工作完成了,首先,我要在bean里面加一个MultipartFile类型的图片属性,用来存放上传到springmvc的图片文件,同时,加一个String类型的属性,用来存储图片名称(图片名称到时候使用UUID以保证不会重复)。这是我的javabean代码段:

private MultipartFile hotelimage;     private String hotelimagepath;

接着,这是springmvc的代码,主要是获取图片到我自定义的hotel的javabean中,然后将图片放到ImageService的方法中进行真正处理图片。

@RequestMapping("insertHotelInformation")	public String insertHotelInformation(Hotel paramHotel,HttpServletRequest request,Model model) throws ParseException, IllegalStateException, IOException{				if(paramHotel!=null){		hotel=paramHotel;		//获取本项目内部的源路径		String path=request.getSession().getServletContext().getRealPath("");        //处理图片的方法,入参为项目源路径和图片文件,并返回图片名称。		String imagepath=ImageService.imageSave(hotel.getHotelimage(),path);        //将图片名称存入到数据库中		hotel.setHotelimagepath(imagepath);		boolean b=hs.insertHotelInformation(hotel);		if(b){			return "html/mainFrame";		}		}			return "html/error";	}

接下来就是真正处理图片的ImageService的实现代码,它先将图片使用UUID命名为不会被重复的名称,然后,它将图片存储到项目内部中,最后返回图片名称,具体代码如下:

public class ImageService {		//保存图片,并且返回图片路径	public static String imageSave(MultipartFile image,String path) throws IllegalStateException, IOException{		//保存数据库的路径  	      String sqlPath = null;   	      //定义文件保存的本地路径  	      String localPath=path+"static/imgs/loadimgs/";  	      //定义 文件名  	      String filename=null;    	      if(!image.isEmpty()){    	          //生成uuid作为文件名称    	          String uuid = UUID.randomUUID().toString().replaceAll("-","");    	          //获得文件类型(可以判断如果不是图片,禁止上传)    	          String contentType=image.getContentType();    	          //获得文件后缀名   	          String suffixName=contentType.substring(contentType.indexOf("/")+1);  	          //得到 文件名  	          filename=uuid+"."+suffixName;   	          System.out.println(filename);  	          sqlPath = localPath+filename;  	          System.out.println(sqlPath);  	          //文件保存路径  	          image.transferTo(new File(sqlPath)); 	      }  	      //把图片的相对路径保存至数据库  	      return filename;	}}

最后,返回springmvc的controller中,将图片名称存储到数据库中,这个是常规操作,这里就不多加描述了,这就是基于form表单的单图片上传方式 ,存储图片位置放在项目内部,数据库存储的是图片名称。

 

转载地址:http://keshn.baihongyu.com/

你可能感兴趣的文章
Bag of Tricks and A Strong Baseline for Deep Person Re-identification
查看>>
vue+flask实现视频目标检测yolov5
查看>>
关于BigInteger
查看>>
UIScrollView不能响应UITouch事件
查看>>
iOS TextFiled 文本密码切换 光标偏移解决
查看>>
iOS 当前应用所占内存和设备可用内存
查看>>
iOS 文件属性
查看>>
UIView的layoutSubviews和drawRect方法何时调用
查看>>
iOS GCD多线程下载原理
查看>>
NSData全部API解释
查看>>
iOS 侧滑菜单封装Demo(类似QQ侧滑效果)
查看>>
Spring学习(二)
查看>>
Spring学习(三)
查看>>
Spring学习(四)
查看>>
java解惑——易错知识点归纳总结
查看>>
Memcached 集群部署
查看>>
Memcached与Spring AOP构建数分布式据库前端缓存框架
查看>>
数据挖掘常用算法整理
查看>>
JNDI学习总结(一)——JNDI数据源的配置
查看>>
JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
查看>>