SSM+ajax使用FormData实现文件的上传以及常见问题解决办法

jsp页面

<form id="addteacher" enctype="multipart/form-data" class="layui-form" method="post">
	<div class="layui-form-item">
	                        <label for="filename" class="layui-form-label">
	                            <span class="x-red">*</span>教师头像
	                        </label>
	                        <div class="layui-input-inline">
	                            <input type="file" id="filename" name="filename"
	                                   required="" lay-verify="filename"  autocomplete="off" class="layui-input" multiple="multiple"/>
	                        </div>
	                        <div class="layui-form-mid layui-word-aux">
	                            <span class="x-red">*</span>请上传教师头像
	                        </div>
	                    </div>
</form>	

ajax写法

   var filename = document.getElementById("filename").value;
                        if ($.trim(filename) == ''){alert("请选择要上传的图片");return ;}
                        console.log("test");
                        var result_meg = "";
                        var uploadFile = new FormData($("#addteacher")[0]);
                        $.ajax({
                            url:"${pageContext.request.contextPath}/TeacherInfoController/uploadFile",
                            type:"post",
                            async: false,
                            cache: false,
                            secureuri: false, //一般设置为false
                            processData: false, //因为data值是FormData对象,不需要对数据做处理。
                            contentType: false,
                            data: uploadFile,
                            success:function(data){

                            },
                        })

ajax写的过程注意事项:

使用formData上传文件

var uploadFile = new FormData(***$("#addteacher")[0]***);

sping-mvc配置MultipartResolver处理器

  <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 默认编码 -->
        <property name="defaultEncoding" value="utf-8" />
        <!-- 文件大小最大值 -->
        <property name="maxUploadSize" value="10485760000" />
        <!-- 内存中的最大值 -->
        <property name="maxInMemorySize" value="40960" />
    </bean>

controller代码

 @RequestMapping(value = "/uploadFile",produces="text/html;charset=utf-8",method=RequestMethod.POST)
    public @ResponseBody String UploadFile(@RequestParam(value = "filename",required = false) MultipartFile  filename,
                             HttpServletRequest request, HttpServletResponse response){
        /*String contentType = request.getContentType();//通过request获取请求类型
        if(contentType != null && contentType.toLowerCase().startsWith("multipart/")){
            MultipartHttpServletRequest multipartRequest = WebUtils.getNativeRequest(request, MultipartHttpServletRequest.class);
            return multipartRequest.getFile(filename);  //返回前端传递的文件信息
        }else{return  null;}*/
       /* MultipartHttpServletRequest MulRequest = request instanceof MultipartHttpServletRequest ? (MultipartHttpServletRequest) request : null;
        System.out.println("bdbdb");
        System.out.println(filename);*/
        System.out.println(filename);
        return "";
    }

温馨提示

在文件上传过程注意事项:

1.SpringMVC+ajax+FormData文件上传报java.lang.NullPointerException检查方向
1.1.springmvc-servlet.xml配置文件要加上下面的标记
    <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 默认编码 -->
        <property name="defaultEncoding" value="utf-8" />
        <!-- 文件大小最大值 -->
        <property name="maxUploadSize" value="10485760000" />
        <!-- 内存中的最大值 -->
        <property name="maxInMemorySize" value="40960" />
    </bean>

最最重要一点:id="multipartResolver"不可以修改

1.1.form表单忘记设置“enctype=“multipart/form-data”
form表单没有设置enctype="multipart/form-data"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值