SpringMVC 使用 MultipartFile 实现文件上传
该代码实现了文件上传和文本字段同时传递到后台进行处理的功能。
直接贴代码,中间涉及到的实体类就不贴了,和功能没啥关系的。
Controller
/**
* 添加活动
*
* @param req
* @param file1
* @param file2
* @return
*/
@RequestMapping(value = "/addActivity", method = RequestMethod.POST)
public JSONObject addActivity(HttpServletRequest req, @RequestParam(value = "file1") MultipartFile file1,
@RequestParam(value = "file2") MultipartFile file2) {
logger.info("enter into method addActivity");
StatusCode statusCode = activityService.addActivity(req, file1, file2);
return new ResultBuilder<>(statusCode).toJSONObject();
}
Service
/**
* 添加活动
* @param req
* @param file1
* @param file2
* @return
*/
public StatusCode addActivity(HttpServletRequest req, MultipartFile file1, MultipartFile file2) {
try {
//从request中获取上传的文件
/*if(file1 == null){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)req;
file1 = multipartRequest.getFile("file1");
}
if(file2 == null){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)req;
file2 = multipartRequest.getFile("file2");
}*/ if (file1 == null || file2 == null) {
logger.info("the file is null");
return StatusCode.FILE_IS_NULL;
} String filepath1 = uploadFile(file1);
String filepath2 = uploadFile(file2);
if (filepath1 == null || filepath2 == null) {
logger.info("the file upload fail");
return StatusCode.FILE_UPLOAD_FAIL;
} String activityname = req.getParameter("activityname");//活动名称
String winrate = req.getParameter("winrate");//中奖率
String expectedwinners = req.getParameter("expectedwinners");//预期中奖人数
String daysnum = req.getParameter("daysnum");//每天首次访问小程序可获得的抽奖次数
String firstnum = req.getParameter("firstnum");//首次关注公众号可获得的抽奖次数
String sharelimitnum = req.getParameter("sharelimitnum");//每日分享最多可获得的抽奖次数
String friendclicknum = req.getParameter("friendclicknum");//每日好友点击最多可获得的抽奖次数
String ruledesc = req.getParameter("ruledesc");//规则描述
String starttime = req.getParameter("starttime");//开始时间
String endtime = req.getParameter("endtime");//结束时间
String prizename = req.getParameter("prizename");//奖品名称
String prizeprice = req.getParameter("prizeprice");//奖品价格
String cardid = req.getParameter("cardid");//卡片ID if (StringUtils.isNullOrEmpty(activityname) || StringUtils.isNullOrEmpty(expectedwinners) || StringUtils.isNullOrEmpty(daysnum)
|| StringUtils.isNullOrEmpty(firstnum) || StringUtils.isNullOrEmpty(sharelimitnum) || StringUtils.isNullOrEmpty(friendclicknum)
|| StringUtils.isNullOrEmpty(ruledesc) || StringUtils.isNullOrEmpty(starttime) || StringUtils.isNullOrEmpty(endtime)
|| StringUtils.isNullOrEmpty(prizename) || StringUtils.isNullOrEmpty(prizeprice) || StringUtils.isNullOrEmpty(cardid)
|| StringUtils.isNullOrEmpty(winrate)) {
logger.info("the paramter is null or empty");
return StatusCode.REQUEST_PARAM_ERROR;
} if (Long.parseLong(starttime) >= Long.parseLong(endtime)) {
logger.info("the starttime less than or equal to endtime");
return StatusCode.ACTIVITY_TIME_ERROR;
} Activity activity = new Activity();
activity.setActivityname(activityname);
activity.setCoverimage(filepath1);
activity.setThumbnail(filepath2);
activity.setWinrate(Double.valueOf(winrate));
activity.setExpectedwinners(Integer.valueOf(expectedwinners));
activity.setDaysnum(Integer.valueOf(daysnum));
activity.setFirstnum(Integer.valueOf(firstnum));
activity.setSharelimitnum(Integer.valueOf(sharelimitnum));
activity.setFriendclicknum(Integer.valueOf(friendclicknum));
activity.setRuledesc(ruledesc);
activity.setStarttime(new Date(Long.parseLong(starttime)));
activity.setEndtime(new Date(Long.parseLong(endtime)));
activity.setPrizename(prizename);
activity.setPrizeprice(Double.valueOf(prizeprice));
activity.setCardid(Integer.valueOf(cardid)); int result = activityMapper.addActivity(activity);
if (result != 1) {
logger.info("add activity fail");
return StatusCode.ADD_ACTIVITY_FAIL;
}
} catch (Exception e) {
logger.error("add activity error", e);
return StatusCode.FAIL;
}
return StatusCode.SUCCESS;
} /**
* 文件上传
* @param file
* @param savepath
* @return
*/
public String uploadFile(MultipartFile file){
String savepath = Constants.UPLOAD_FILE_IMAGE_SAVE_PATH;
File filedir = new File(savepath);
//如果文件夹不存在则创建
if (!filedir.exists()) {
logger.info("create directory:{}", savepath);
try{
filedir.mkdirs();
}catch(Exception e){
logger.error("create directory fail", e);
return null;
}
} SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String nowdate = sdf.format(new Date(System.currentTimeMillis())); String originalfilename = file.getOriginalFilename();
if (originalfilename == null || !originalfilename.contains(".")) {
logger.info("file name is error:{}", originalfilename);
return null;
}
String suffix = originalfilename.substring(originalfilename.indexOf("."));
String filepath = savepath + nowdate + suffix; File targetFile = new File(filepath);
try {
file.transferTo(targetFile);
} catch (Exception e) {
logger.error("file upload fail", e);
return null;
}
return filepath;
}
使用FORM的话需要指定enctype="multipart/form-data"
附上我测试用的form表单
<form action="http://localhost:8080/activity/addActivity" method="post" enctype="multipart/form-data">
activityname<input type="text" name="activityname" value="第一个测试活动"/><br>
expectedwinners<input type="text" name="expectedwinners" value="100"/><br>
daysnum<input type="text" name="daysnum" value="3"/><br>
firstnum<input type="text" name="firstnum" value="5"/><br>
sharelimitnum<input type="text" name="sharelimitnum" value="6"/><br>
friendclicknum<input type="text" name="friendclicknum" value="7"/><br>
ruledesc<input type="text" name="ruledesc" value="这里简单描述下规则,自己写啊。"/><br>
starttime<input type="text" name="starttime" value="1519292136927"/><br>
endtime<input type="text" name="endtime" value="1519293136927"/><br>
prizename<input type="text" name="prizename" value="笔记本电脑"/><br>
prizeprice<input type="text" name="prizeprice" value="5999.56"/><br>
cardid<input type="text" name="cardid" value="1"/><br>
<input type="file" name="file1"/><br>
<input type="file" name="file2"/><br>
<input type="submit" value="提交"/>
</form>
SpringMVC 使用 MultipartFile 实现文件上传的更多相关文章
- SpringMVC 使用MultipartFile实现文件上传(转)
http://blog.csdn.net/kouwoo/article/details/40507565 一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们 ...
- springMVC实现 MultipartFile 多文件上传
1.Maven引入所需的 jar 包(或自行下载) <dependency> <groupId>commons-io</groupId> <artifactI ...
- SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
- SpringMVC注解方式与文件上传
目录: springmvc的注解方式 文件上传(上传图片,并显示) 一.注解 在类前面加上@Controller 表示该类是一个控制器在方法handleRequest 前面加上 @RequestMap ...
- SSM框架之SpringMVC(5)文件上传
SpringMVC(5)文件上传 1.实现文件上传的前期准备 1.1.文件上传的必要前提 A form 表单的 enctype 取值必须是: multipart/form-data(默认值是:appl ...
- 利用spring的MultipartFile实现文件上传【原】
利用spring的MultipartFile实现文件上传 主要依赖jar包 spring-web-3.0.6.RELEASE.jar 用到 (org.springframework.web.multi ...
- SpringMVC 通过commons-fileupload实现文件上传
目录 配置 web.xml SpringMVC配置文件 applicationContext.xml 文件上传 Controller 上传实现一 上传实现二 测试 依赖 配置 web.xml < ...
- SpringMvc MultipartFile 图片文件上传
spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...
- SpringMVC中使用 MultipartFile 进行文件上传下载及删除
一:引入必要的包 <!--文件上传--> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fil ...
随机推荐
- windows -休眠
查询服务器执行的睡眠状态 powercfg -a 开始休眠方法:手工键入如下命令: powercfg -hibernate on 命令执行之后立即就可以生效,无需要重新启动系统,再次执行“powerc ...
- Replace To Make Regular Bracket Sequence
Replace To Make Regular Bracket Sequence You are given string s consists of opening and closing brac ...
- 算法 kmp算法
kmp算法是改进后的字符匹配算法,它与bf算法的区别是,每次从串与主串匹配失败后,从串与主串匹配的位置不同. 下面具体说下这两种算法的区别: 主串:BABCDABABCDABCED 从串:ABCDAB ...
- [二分答案][NOIP2015]跳石头
跳石头 题目描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石(不含起 ...
- GUI学习之八——复选框QCheckBox的学习总结
一.描述 a.QCheckBox一般用于给用户提供若干选项中多个选择时的使用 b.控件左侧有一个方框来显示控件被选中. c.复选框是有三种状态的 二.使用 1.创建 复选框的创建和常规的按钮创建方式是 ...
- js最实用string(字符串)类型的使用及截取与拼接详解
var a = '世界上最远的距离不是天涯海角'; 一.通过字符获取位置或通过位置获取字符: //指定位置返回字符console.log(str.charAt(1));console.log(str[ ...
- UVA 2290 Transmitters
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- 移动端H5页面禁止长按复制和去掉点击时高亮
/*设置IOS页面长按不可复制粘贴,但是IOS上出现input.textarea不能输入,因此将使用-webkit-user-select:auto;*/ *{ -webkit-touch-callo ...
- Shiro学习
Shiro学习资源 Shiro官网,http://shiro.apache.org/index.html 学习网站链接,http://blog.java1234.com/blog/articles/4 ...
- centos7下安装mysql会遇到的问题集合
1.mysqld_safe提示 command not found 解决方法 https://blog.csdn.net/lampqiu/article/details/79138961 2.Mysq ...