SpringBoot中,文件上传与删除的例子

上传:
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">&times;</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);
    }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值