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 ...
随机推荐
- Linux驱动之LCD驱动编写
在Linux驱动之内核自带的S3C2440的LCD驱动分析这篇博客中已经分析了编写LCD驱动的步骤,接下来就按照这个步骤来字尝试字节编写LCD驱动.用的LCD屏幕为tft屏,每个像素点为16bit.对 ...
- 多个表左联,要返回全部的结果,解决不能用where的问题
qb.leftJoin('info_student', 'grouping_class_student.studentId', 'info_student.id'); qb.leftJoin('gro ...
- Mnist
Mnist 先贴一个介绍的很好的博客 https://blog.csdn.net/sysushui/article/details/53257185 mnist是一个手写体数字的数据集.上图是数据集的 ...
- impala操作hase、hive
impala中使用复杂类型(Hive): 如果Hive中创建的表带有复杂类型(array,struct,map),且储存格式(stored as textfile)为text或者默认,那么在im ...
- centos 安装nvm和node.js
#安装githubyum install git -y #下载nvmgit clone git://github.com/creationix/nvm.git ~/nvm #设置nvm 自动运行;ec ...
- JB的IDE可视化MongoDB、MySQL数据库信息
一.问题: 在使用JB的IDE的时候(pycharm.IDEA等)可视化mysql和mongodb的数据库信息,效果如下 MySQL: MongoDB: 可视化数据表关系: 二.方法: 1.MySQ ...
- cpu的工作原理
- Linux 云计算运维之路
搭建中小型网站的架构图 s1-2 Linux 硬件基础 s3-4 linux 基础 文件系统 用户权限 s5-6 Linux 标准输出 系统优化 目录结构 w7 rsync-备份服务器 w8 NFS服 ...
- windows putty xming virt-manager
记一次windows环境使用linux下使用virt-manager软件的问题 环境:windows server 2008.ubuntu-server 软件:putty.virt-manager.x ...
- HTML5中input标签有用的新属性
HTML5对input增加了一些新标签,个人觉得比较常用有效的以下几个 placeholder=“请输入” 常见用于默认提示 autofocus 自动聚焦到当前输入框 maxlength=" ...