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 ...
随机推荐
- .NET Core PartialView 与 Ajax
Ajax的核心是XMLHttpRequest对象(XHR),能够以异步方式从服务器获取新数据.开发主要利用Ajax来执行异步刷新和局部视图更新的功能. 而开发常常在前段页面利用JQuery封装的Aja ...
- 获取txt md5值上传文件完整性校验
网络上传文件到服务器 做md5 校对.判断文件是否破坏 首先求txt文件的md5值 ,1万条数据 求出的值 文件MD5:e5467b6a8e3c26af8c5af0bda3739280 服务器处理程序 ...
- struts 1.x配置文件说明
<struts-config> <global-exceptions /> <!--全局映射定义--> <global-forwards> <fo ...
- HDU 6161.Big binary tree 二叉树
Big binary tree Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- js兼容公用方法
var utils = (function(){ //把类数组转换为数组(兼容所有的浏览器) function toArray(classAry){ var ary = []; try { ary = ...
- 关于jquery的选择器中的空格问题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- AspNetCore OpenId
1 Server端 public class Startup { public Startup(IConfiguration configuration) { Configuration = conf ...
- 小白的CTF学习之路5——内存的逻辑结构
很衰的一天,各种意料之外的问题,但都挡不住我每日一更的步伐 内存的逻辑结构大致分为以下几种: 数组 栈与队列 链表 二叉树 以上,数组,栈,链表是我这章要说明的 在学习前需要了解的两个问题: 1.内存 ...
- ubuntu18.04搭建nfs
1.服务端安装 #apt-get update -y #apt-get install -y nfs-kernel-server #apt-get enable nfs-kernel-server 2 ...
- 卸载HDP大数据平台
使用以下说明卸载HDP: 停止所有已安装的HDP服务.请参阅HDP参考指南中的停止HDP服务. 如果安装了Knox,请在所有群集节点上运行以下命令: 对于RHEL / CentOS / Oracle ...