【SSM】文件上传到服务器

解决tomcat服务器上传文件大小限制:
在conf/server.xml文件中:

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

改为

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="-1" disableUploadTimeout="true"/>

导入jar包:

<dependency>
    <groupId>commons-fileuploadgroupId>
    <artifactId>commons-fileuploadartifactId>
    <version>1.3.1version>
dependency>

在springmvc配置文件配置

  
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        
        <property name="defaultEncoding" value="UTF-8"/>
        
        <property name="maxUploadSize" value="5000000">property>
    bean>
    
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**" />
            <bean class="com.it.web.handler.FileUploadInterceptor">
                
                <property name="maxSize" value="5000000" />
            bean>
        mvc:interceptor>
    mvc:interceptors>

利用layui的upload模块上传文件

<button type="button" class="layui-btn" id="upload-bt">
        <i class="layui-icon">&#xe67c;</i>上传文件
</button>
layui.use('upload', function(){
        var upload = layui.upload;
        //执行实例
        var uploadInst = upload.render({
            elem: '#upload-bt' //绑定元素
            ,url: 'music/upload' //上传接口
            ,accept: 'audio'
            ,done: function(res){
                if(res.code === 0){
                    alert("文件上传成功!");
                }
            }
            ,error: function(){
                //请求异常回调
            }
        });
    });

后台处理:
文件上传:使用layui框架需要返回json格式的字符串

@RequestMapping(path="upload",method = RequestMethod.POST)
    public RestResult upload(@RequestParam() MultipartFile file,HttpSession session) throws IOException {
        // 获取存放路径
        String path = session.getServletContext().getRealPath("/song");
        //System.out.println(path);
        // 判断路径是否存在
        File upfile = new File(path);
        if(!upfile.exists()){
            upfile.mkdirs();
        }
        // 获得文件名
        String filename = file.getOriginalFilename();
        upfile = new File(path+"/"+filename);
        // 将文件移动到指定路径中
        file.transferTo(upfile);
        // 返回成功信息
        return resultGenerator.getFreeResult(0,"",null,0);
    }

文件上传大小拦截器:
参考博客

public class FileUploadInterceptor extends HandlerInterceptorAdapter {
    private long maxSize;

    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
        //判断是否文件上传
        if(request!=null && ServletFileUpload.isMultipartContent(request)) {
            ServletRequestContext ctx = new ServletRequestContext(request);
            //获取上传文件尺寸大小
            long requestSize = ctx.contentLength();
            System.out.println("文件大小是:"+requestSize);
            if (requestSize > maxSize) {
                //当上传文件大小超过指定大小限制后,模拟抛出MaxUploadSizeExceededException异常
                throw new MaxUploadSizeExceededException(maxSize);
            }
        }
        return true;
    }
    public void setMaxSize(long maxSize) {
        this.maxSize = maxSize;  //设置文件大小
    }
}

你可能感兴趣的:(Java)