Ajax实现文件上传(Spring MVC)

前端表单 和 JQuery jsp/html代码

使用JQury

    <script src="static/js/jquery-3.4.1.js"></script>

前端表单

<form id="form-avatar" enctype="multipart/form-data">
    <p>请选择要上传的文件:</p>
    
    <p><input type="file" name="file" id=InputFile /></p>
    <p><input id="btn-avatar" type="button" value="上传" /></p>
</form>

ajax请求服务器

<script>


    function uploadfile(){
		var $file = $("#InputFile").val();//用户文件内容(文件)
            // 判断文件是否为空
            if ($file == "") {
                alert("请选择上传的目标文件! ")
                return false;
            }
            //判断文件类型,我这里根据业务需求判断的是Excel文件
            var fileName1 = $file.substring($file.lastIndexOf(".") + 1).toLowerCase();
            if (fileName1 != "xls" && fileName1 != "xlsx") {
                alert("请选择Execl文件!");
                return false;
            }
            //判断文件大小
            var size1 = $("#InputFile")[0].files[0].size;
            if (size1 > 104857600) {
                alert("上传文件不能大于100M!");
                return false;
            }
            var f = false;
            $.each(JSON.parse(filenames), function (index, value) {
                if (value == getFileName($file2)) {
                    f = true;
                }
            });

            if (f == true) {
                alert("文件已存在,请勿重复上传");
                return false;
            }
            alert("上传中...请稍后");
        $.ajax({
            url : "/url/upload",
            data: new FormData($("#form-avatar")[0]),
            type : "POST",
            // 告诉jQuery不要去处理发送的数据,用于对data参数进行序列化处理 这里必须false
            processData : false,
            // 告诉jQuery不要去设置Content-Type请求头
            contentType : false,

            success : function(json) {
                alert("执行成功");
            },
            error : function(json) {
                alert("执行失败");

            }
        });
    }
    $("#btn-avatar").on("click",uploadfile);
</script>

Conroller.java

@PostMapping("/upload")
    public void  fileUpload2(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request) throws IOException {
        System.out.println("走了");
        //上传路径保存设置
        String path = request.getServletContext().getRealPath("/upload");
        File realPath = new File(path);
        if (!realPath.exists()) {
            realPath.mkdir();
        }
        //上传文件地址
        System.out.println("上传文件保存地址:" + realPath);

        //通过CommonsMultipartFile的方法直接写文件(注意这个时候)
        file.transferTo(new File(realPath + "/" + file.getOriginalFilename()));

    }

结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值