导入相关jar包
导入commons-fileupload-1.3.1.jar 与 commons-io-2.2.jar
编写前端页面
input类型为file
,form标签提交方式为post
,entype属性值改为multipart/form-data
<form action="file" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
${msg}
编写Springmvc的配置文件
配置目标方法内形参的一个实现类,此bean的ID不可改变,
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 最大上传文件大小 单位为B-->
<property name="maxUploadSize" value="50000" />
<!-- 缓存空间大小 -->
<property name="maxInMemorySize" value="1024" />
<!-- 编码格式 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 是否为懒加载 -->
<property name="resolveLazily" value="true"></property>
</bean>
编写后台java上传控制类
此文件上传至服务器所在电脑的一个盘,防止服务器重启文件消失
@RequestMapping("file")
public String file(MultipartFile file,ModelMap map){
long date = (new Date()).getTime();
// 文件前缀,取值为当前时间到1970年的毫秒数,防止文件名重复
String s = String.valueOf(date);
// 获取文件名
String oriName = file.getOriginalFilename();
// 获取文件后缀名
// String extName = oriName.substring(oriName.lastIndexOf("."));
//拼接文件名称
StringBuffer name = new StringBuffer();
name.append(s);
name.append("_");
name.append(oriName);
try {
//使用ModelMap 的方法直接保存文件到指定路径
file.transferTo(new File("E:/img/"+name.toString()));
//传文件名到前端取值,可以直接获取到该图片
map.put("imageName", oriName);
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success";
}
把文件存到本地磁盘后需要在服务器中获取上传的文件,可以直接将文件名添加到数据库,然后再前端取值时将文件名传值到前端,显示文件
在前端取时直接通过编写的路径加后台传来的值即可
<img alt="图片" src="/img/${imageName}">