上传文件时,需要在springmvc.xml配置文件上传解析器
<!-- 文件上传需要一个文件上传解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
</bean>
1. jsp
<button type="button" id="adAdd_btn" class="btn btn-primary"
style="float: right;">
<i class="glyphicon glyphicon-plus"></i> 新增
</button>
广告管理的模态框
<!-- 广告添加的模态框 -->
<div class="modal fade" id="ad_add_model" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">添加广告</h4>
</div>
<div class="modal-body">
<form action="${ctp }/servicectrl/ads/upload" id="ad_form" method="post" enctype="multipart/form-data">
<div class="form-group">
<label>广告名</label>
<input type="text" class="form-control"id="ad_name_input" placeholder="广告名">
</div>
<div class="form-group">
<label>选择广告</label>
<input type="file" id="ad_file_input" name="ad">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary" id="submitBtn">确定</button>
</div>
</div>
</div>
</div>
script
<script type="text/javascript">
//点击新增添加模态框
$("#adAdd_btn").click(function(){
$("#ad_add_model").modal("show");
});
$("#submitBtn").click(function(){
//1.提交表单,不是ajax提交表单,这就是点击提交按钮进行的页面跳转
$("#ad_form").submit();
//2.关闭模态框
//3.刷新list页面
});
</script>
实现类
package com.java.scw.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.java.scw.dao.TAdvertisementMapper;
import com.java.scw.entity.TAdvertisement;
import com.java.scw.service.AdvertisementService;
@Service
public class AdvertisementServiceImpl implements AdvertisementService {
@Autowired
TAdvertisementMapper advertisementMapper;
@Override
public boolean addAdver(TAdvertisement advertisement) {
return advertisementMapper.insertSelective(advertisement)>0;
}
}
2.service
package com.java.scw.service;
import com.java.scw.entity.TAdvertisement;
public interface AdvertisementService {
boolean addAdver(TAdvertisement advertisement);
}
3.controller
package com.java.scw.controller.manager;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.java.scw.constant.Constants;
import com.java.scw.entity.TAdvertisement;
import com.java.scw.entity.TUser;
import com.java.scw.service.AdvertisementService;
@Controller
@RequestMapping("/servicectrl/ads")
public class AdvertisementController {
@Autowired
AdvertisementService advertisementService;
@RequestMapping("/list")
public String list(){
return "manager/serviceman/advertisement";
}
/**
* produces="text/html;charset=utf-8" 相当于给响应头加Content-Type能解决乱码
* @param session
* @param file
* @param name
* @return
*/
@ResponseBody
@RequestMapping(value="/upload",produces="text/html;charset=utf-8")
public String upload(HttpSession session,@RequestParam("ad")MultipartFile file,String name){
//1.获取某个文件夹在服务器上的真实路径
ServletContext context = session.getServletContext();
//2.使用context对象获取真实路径
String adPath = context.getRealPath("/advertisements");
//3.把文件上传到这个位置
String filename=UUID.randomUUID().toString().replace("-", "").substring(0,10)+"_file_"+file.getOriginalFilename();
try {
//文件上传后的网络位置
String netUrl="advertisements/"+filename;
file.transferTo(new File(adPath+"/"+filename));
TAdvertisement advertisement = new TAdvertisement();
advertisement.setName(name);
advertisement.setUrl(netUrl);
advertisement.setUserid(((TUser)session.getAttribute(Constants.LOGIN_USER)).getId());
//保存到数据库中
boolean flag=advertisementService.addAdver(advertisement);
if (flag) {
return "保存成功!";
}else {
return "广告上传失败!";
}
} catch (IOException e) {
System.out.println("广告上传异常:"+e);
return "广告上传失败!!!";
}
}
}