上传:
service层:
主要代码
// 其中文件类型有多个的话用map包装接收
public int addIntegral(Map<String,MultipartFile> files, Map<String,String> param, String path) {
File realPath = new File(path);
// 如果不存在创建
if (!realPath.exists()) {
realPath.mkdirs();
}
//文件
MultipartFile codeFile = files.get("code");
MultipartFile videoFile = files.get("video");
try {
codeFile.transferTo(new File( realPath + File.separator + codeFile.getOriginalFilename()));
videoFile.transferTo(new File( realPath + File.separator + videoFile.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
}
controller层:
@RequestMapping("/addIntegral")
public String addIntegral (@RequestParam Map<String,MultipartFile> files,
@RequestParam Map<String,String> map,
HttpServletRequest request) {
/*String verificationRes = integralService.checkCode(map.get("verificationCode"),map.get("phone"));
if (!verificationRes.equals("10")) {
return verificationRes;
}
if ( null == files || files.size() <= 0 ) {
return "null";
}*/
// 路径可以自定义
String path = request.getServletContext().getRealPath("/file") + File.separator + map.get("team") + "-" + map.get("name");
int result = integralService.addIntegral(files, map, path);
/* if ( result > 0 ) {
return "success";
} else {
return "error";
}*/
}
页面js:
展示主要代码
// 验证
var code = document.getElementById("code").files[0];
var video = document.getElementById("video").files[0];
var phoneValidate = /^[1][3,4,5,7,8][0-9]{9}$/; //验证手机号
var codeValidate = /^.+\.(zip|rar)$/; //只允许后缀名为.zip或.rar的文件
var videoValidate = /^.+\.(mp4|AVI|rmvb|MPEG)$/; //只允许后缀名为.zip或.rar的文件
if (!codeValidate.exec($("#code").val())){
alert("请上传.zip或.rar文件!");
$("#code").focus();
return false;
} else if (code.size > 1024*1024*20) {
alert("文件大小不能超过20M!");
$("#code").focus();
return false;
}
if(!videoValidate.exec($("#video").val())){
alert("请上传.mp4或.AVI文件或.rmvb文件或.MPEG文件!");
$("#video").focus();
return false;
} else if (video.size > 1024*1024*100) {
alert("文件大小不能超过20M!");
$("#video").focus();
return false;
}
// 用
var formData = new FormData();
formData.append("team",team);
formData.append("name",name);
formData.append("school",school);
formData.append("score",score);
formData.append("time",time);
formData.append("phone",phone);
formData.append("verificationCode",VerificationCode);
formData.append("code",code);
formData.append("video",video);
$.ajax({
url:"/addIntegral",
dataType:"text",
type:"post",
async:false,
data:formData,
processData:false,
contentType:false,
success:function (data) {
if (data == "success") {
window.location.reload();
$('#addModal').modal('hide');
} else if ( data=="1" ){
alert("手机号码不正确");
} else if ( data=="2" ) {
alert("验证失败(短信服务)");
} else if ( data=="3" ) {
alert("参数错误");
} else if ( data=="4" ) {
alert("验证码已经失效");
} else if ( data == "error"){
alert("代码错误");
} else if ( data == "null"){
alert("文件参数为空");
}
},
error:function (error) {
console.log(error);
$('#addModal').modal('hide');
}
});
删除:
service层:
public int updateIntegral (Map<String,MultipartFile> files, Map<String,String> param, String path){
/*Integral integral = new Integral();
integral.setTeam(param.get("team"));
integral.setName(param.get("name"));
integral.setSchool(param.get("school"));
integral.setScore(Integer.parseInt(param.get("score")));
integral.setTime(param.get("time"));
integral.setValid(Long.parseLong("1"));
integral.setCreatetime(LocalDateTime.now(ZoneId.systemDefault()));
integral.setCreateuser("1");
integral.setUpdatetime(LocalDateTime.now(ZoneId.systemDefault()));
integral.setUpdateuser("1");*/
File realPath =null;
MultipartFile codeFile = null;
MultipartFile videoFile = null;
if (files.size() > 0) {
//文件
realPath = new File(path);
// 如果不存在创建
if (!realPath.exists()) {
realPath.mkdirs();
}
try {
if (param.containsKey("codeOriginalPath")) {
// 删除原来的
String codeOriginalPath = param.get("codeOriginalPath");
File codeOriginalFile = new File(codeOriginalPath);
if (codeOriginalFile.exists()){//文件是否存在
codeOriginalFile.delete();//删除文件
}
// 添加新的
codeFile = files.get("code");
codeFile.transferTo(new File( realPath + File.separator + codeFile.getOriginalFilename()));
integral.setCodes(realPath + File.separator + codeFile.getOriginalFilename());
}
if (param.containsKey("videoOriginalPath")) {
String videoOriginalPath = param.get("videoOriginalPath");
File videoOriginalFile = new File(videoOriginalPath);
if (videoOriginalFile.exists()){//文件是否存在
videoOriginalFile.delete();//删除文件
}
videoFile = files.get("video");
videoFile.transferTo(new File( realPath + File.separator + videoFile.getOriginalFilename()));
integral.setVideos(realPath + File.separator + videoFile.getOriginalFilename());
}
} catch (IOException e) {
e.printStackTrace();
}
}
/*UpdateWrapper<Integral> integralUpdateWrapper = new UpdateWrapper<>();
integralUpdateWrapper.eq("phone",param.get("phone"));
integralUpdateWrapper.eq("valid",1);
int result = integralMapper.update(integral,integralUpdateWrapper);*/
return result;
页面:
// 注释部分不重要
<!--<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="editModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="editModalLabel">修改比赛成绩</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form id="editFrom" method="post" enctype="multipart/form-data" >
<div class="form-group">
<label for="teamByEdit" class="col-form-label">队伍名称:</label>
<input type="text" class="form-control" id="teamByEdit">
</div>
<div class="form-group">
<label for="nameByEdit" class="col-form-label">队长名称:</label>
<input type="text" class="form-control" id="nameByEdit">
</div>
<div class="form-group">
<label for="schoolByEdit" class="col-form-label">所在大学:</label>
<input type="text" class="form-control" id="schoolByEdit">
</div>
<div class="form-group">
<label for="scoreByEdit" class="col-form-label">总分:</label>
<input type="text" class="form-control" id="scoreByEdit">
</div>
<div class="form-group">
<label for="timeByEdit" class="col-form-label">用时:</label>
-->
<!-- 单位默认秒,step不写的话就没有秒数选择,step控制秒数跳步
<!--<input type="time" class="form-control" id="timeByEdit" step="1">
</div> -->
<!-- 把文件上传空间隐藏,用临时的文本空间代替,要不然无法回显文件信息。文本控件处理文件点击事件,处理原文件与新文件变更后的修改 -->
<div class="form-group">
<label for="codeByEdit" class="col-form-label">代码:</label>
<input type="file" class="form-control-file" id="codeByEdit" style="display: none" onchange="fileChange(1,'codeByEdit')">
<div class="input-group">
<input type="text" id="codeByEditTmp" class="form-control" placeholder="" onclick="codeByEdit.click()">
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button" id="selFileByEdit" onclick="codeByEdit.click()">选择文件</button>
</div>
</div>
<small id="codeHelpByEdit" class="form-text text-muted">请上传.zip或.rar文件.文件大小不超过20M.</small>
</div>
<div class="form-group">
<label for="videoByEdit" class="col-form-label">录像:</label>
<input type="file" class="form-control-file" id="videoByEdit" style="display: none" onchange="fileChange(2,'videoByEdit')">
<div class="input-group">
<input type="text" id="videoByEditTmp" class="form-control" placeholder="" onclick="videoByEdit.click()">
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button" id="selFile2ByEdit" onclick="videoByEdit.click()">选择文件</button>
</div>
</div>
<small id="videoHelpByEdit" class="form-text text-muted">请上传.mp4或.AVI文件或.rmvb文件或.MPEG文件,文件大小不超过100M.</small>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary" onclick="updateIntegral()">上传</button>
</div>
</div>
</div>
</div>
js:
// 修改的时候判断原文件是否被修改
var codeTmp = $("#codeByEditTmp").val();
var videoTmp = $("#videoByEditTmp").val();
var originalCodeName = getFileName(integralInfo.codes);
var originalVideoName = getFileName(integralInfo.videos);
var formData = new FormData();
formData.append("team",team);
formData.append("name",name);
formData.append("school",school);
formData.append("score",score);
formData.append("time",time);
formData.append("phone",integralInfo.phone);
if (codeTmp != originalCodeName) {
if (!codeValidate.exec($("#codeByEdit").val())){
alert("请上传.zip或.rar文件!");
$("#codeByEdit").focus();
return false;
} else if (code.size > 1024*1024*20) {
alert("文件大小不能超过20M!");
$("#codeByEdit").focus();
return false;
}
formData.append("codeOriginalPath",integralInfo.codes);
formData.append("code",code);
}
if (videoTmp != originalVideoName) {
if(!videoValidate.exec($("#videoByEdit").val())){
alert("请上传.mp4或.AVI文件或.rmvb文件或.MPEG文件!");
$("#videoByEdit").focus();
return false;
} else if (video.size > 1024*1024*100) {
alert("文件大小不能超过20M!");
$("#videoByEdit").focus();
return false;
}
formData.append("videoOriginalPath",integralInfo.videos);
formData.append("video",video);
}
$.ajax({
url:"/updateIntegral",
dataType:"text",
type:"post",
async:false,
data:formData,
processData:false,
contentType:false,
success:function (data) {
if (data == "success") {
alert("修改成功");
integralInfo = null;
$("#editModal").modal("hide");
window.location.reload();
} else {
alert("修改失败");
$("#editModal").modal("hide");
}
},
error:function (error) {
console.log(error);
}
});