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 ...
随机推荐
- python 修改的函数装饰器
把好的代码记录下来 方便以后学习 修改的函数参数装饰器 from functools import wraps import time import logging def warn(timeout) ...
- python日志
日志 -- 用来记录用户行为或者代码的执行过程 logging.debug('debug message') # 低级别的 # 排错信息 logging.info('info message') # ...
- Hishop数据库根据产品ProductID取产品规格
#region 产品规格 public static string GetSku(int ProductId) { DataTable skus =GetSkus(ProductId); // Res ...
- 安卓adb工具的安装方法
adb是Android的一个很重要的调试工具,熟练掌握后可实现很多功能,比如有些手机的解锁.ROOT就会用到adb工具.可很多朋友都说不会安装,今天就从最开始的安装方法说起. adb工具其实不用安装, ...
- Linux iptables 安全配置(防Ddos)
*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-N whitelist-A whitelist -s 58.60 ...
- MySql共享锁和排它锁
共享锁和排他锁 1.共享锁: 读锁.X锁,在查询时生效,多个事务在查询同一个数据时共享一把锁,但是不能作用于修改数据,在select语句后添加 lock in share mode : 2.排他锁:在 ...
- 抖音分享和授权(iOS)
准备工作 注册appkey 抖音开放平台 集成sharesdk 下载地址 Xcode配置:urlScheme为注册的appkey, 白名单:douyinsharesdk ,douyinopensdk ...
- p2p技术之n2n源码核心简单分析一
首先在开篇之前介绍下内网打洞原理 场景:一个服务器S1在公网上有一个IP,两个私网机器C1,C2 C1,C2分别由NAT1和NAT2连接到公网,我们需要借助S1将C1,C2建立直接的TCP连接,即由C ...
- pycharm设置文件编码
原文链接
- DNN原理探究系列之目录与序章篇
序言: 神经网络结构,作为最成功的机器学习模型之一,其工作原理一直被埋藏得比较深,其解释性以至于被称为黑盒. 自己对于DNN的理解也只能算刚踏入了门槛,对于人脑的原理与DNN原理之间的互通性,一直是非 ...