该代码实现了文件上传和文本字段同时传递到后台进行处理的功能。

直接贴代码,中间涉及到的实体类就不贴了,和功能没啥关系的。

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 实现文件上传的更多相关文章

  1. SpringMVC 使用MultipartFile实现文件上传(转)

    http://blog.csdn.net/kouwoo/article/details/40507565 一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们 ...

  2. springMVC实现 MultipartFile 多文件上传

    1.Maven引入所需的 jar 包(或自行下载) <dependency> <groupId>commons-io</groupId> <artifactI ...

  3. SpringMVC:学习笔记(8)——文件上传

    SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...

  4. SpringMVC注解方式与文件上传

    目录: springmvc的注解方式 文件上传(上传图片,并显示) 一.注解 在类前面加上@Controller 表示该类是一个控制器在方法handleRequest 前面加上 @RequestMap ...

  5. SSM框架之SpringMVC(5)文件上传

    SpringMVC(5)文件上传 1.实现文件上传的前期准备 1.1.文件上传的必要前提 A form 表单的 enctype 取值必须是: multipart/form-data(默认值是:appl ...

  6. 利用spring的MultipartFile实现文件上传【原】

    利用spring的MultipartFile实现文件上传 主要依赖jar包 spring-web-3.0.6.RELEASE.jar 用到 (org.springframework.web.multi ...

  7. SpringMVC 通过commons-fileupload实现文件上传

    目录 配置 web.xml SpringMVC配置文件 applicationContext.xml 文件上传 Controller 上传实现一 上传实现二 测试 依赖 配置 web.xml < ...

  8. SpringMvc MultipartFile 图片文件上传

    spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...

  9. SpringMVC中使用 MultipartFile 进行文件上传下载及删除

    一:引入必要的包 <!--文件上传--> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fil ...

随机推荐

  1. JS判断一个数组中有无重复元素(数字)

    前段时间遇到了这个问题 也百度了很多 不过还是用自己的方法解决了 一个超级简单的方法 简单到令人发指 由于直接写文本太丑了 所以还是截图吧 嘻嘻嘻 假如有一个这样的数组 (这是假如  可能每个人的数据 ...

  2. gooflow学习笔记

    前端jqury脚本实现流程设计,兼容目前主流浏览器 gooflow 默认属性节点只有:id,name,top,left,width,height,type (各个版本不同,属性节点有所增加),但是这些 ...

  3. s3c2440 nandflash 初始化

    1.什么是 nandflash ? FLASH闪存 闪存的英文名称是"Flash Memory",一般简称为"Flash",它属于内存器件的一种,是一种非易失性 ...

  4. canvas简易画板。

    在学canvas的时候,想到可以做一个自己用来画画的简易画板,加上canvas的基础都已经学完,便尝试做了一个画板.如图 1.获取标签. var c=document.getElementById(' ...

  5. mongoDb造数据

    package mongoUtil; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import ...

  6. ELK的文档搭建

    一.安装elasticsearch 官网:https://www.elastic.co/guide/index.html https://www.elastic.co/guide/en/elastic ...

  7. vue + spring boot + spring security 前后端分离 携带 Cookie 登录实现 只写了个登录

    最近想弄一下vue 所以就自己给自己找坑入   结果弄的满身是伤 哈哈哈 首先我说下 前后端分离  跨域请求  我在网上找了一些  可是都是针对于 spring boot 的 我自己还有 securi ...

  8. Python字符串格式化--format()方法

    https://blog.csdn.net/i_chaoren/article/details/77922939       csdn

  9. php面试题--并列排名问题

    给定一个二维数组: <?php $data = [ ['name' =>'j1', 'score' => '80'], ['name' =>'j2', 'score' => ...

  10. 2018-04-10 我的GitHub诞生的日子,欢迎大家吐槽批评

    我的GitHub,诞生的日子,欢迎大家吐槽与批评,嘻嘻 首先是自己想刷一下LeetCode上的代码,其次创建了自己的读书笔记以及面试经验与教训 下边是仓库的Git链接,欢迎大家的批评与修正,谢谢: L ...