以下使用ssm框架,dao层的实现被省略;
条件:
要想实现图片或文件的上传前端页面的form表单要加上这个属性enctype=”multipart/form-data,如下:
<form id="mainForm" method="post" action="${basePath}/ad/add" enctype="multipart/form-data">
<input id="imgFile" name="imgFile" class="allInput" style="width:100%;" type="file"/>
</form >
在后端页面,在controller中就要使用 MultipartFile进行接收,
public String add(MultipartFile imgFile, Model model) {
String fileName=System.currentTimeMillis()+"_"+imgFile().getOriginalFilename();//重新设置文件名字
if(imgFile()!=null&&imgFile().getSize()>0){
File fileFolder=new File(adImageSavePath);//adImageSavePath为文件保存路径
File file=new File(adImageSavePath+fileName);
if(!fileFolder.exists()){
fileFolder.mkdirs();
}
try {
imgFile().transferTo(file);//将文件写到电脑磁盘上
return true;
} catch (IllegalStateException e) {
//TODO 添加错误日志
return false;
} catch (IOException e) {
return false;
}
return "forward:/ad"; //跳转页面
}
最后:
为了控制上传文件的大小与编码,可以在springmvc的配置文件中加上文件上传解析器。
<!-- 配置文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 指定所上传文件的总大小不能超过20M。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="20000000"/>
<property name="defaultEncoding" value="utf-8"></property>
</bean>