枫花血夜 2024-05-07 11:41 采纳率: 0%
浏览 13

java文件上传.mp4、.avi等格式附件异常

文件上传,上传.mp4、.avi等格式附件异常,上传.docx、.png、.jpg正常
项目环境,后端springboot2.7.0,jdk1.8,前端vue,部署在iis上,.net framework4.6
服务器:windows server 2012 r2
错误:

org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: java.io.IOException: 远程主机强迫关闭了一个现有的连接。
    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:124)
    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:115)
    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:88)
    at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:122)

Caused by: java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: java.io.IOException: 远程主机强迫关闭了一个现有的连接。
    at org.apache.catalina.connector.Request.parseParts(Request.java:2977)
    at org.apache.catalina.connector.Request.getParts(Request.java:2834)
    at org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:1098)
    at javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:361)
    at javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:361)
    at javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:361)
    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:95)
    ... 89 common frames omitted

本地调试时,上传没有问题,但是发布到服务器上后就出现了上述问题,通过一些定位发现在这一步出错

img

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-05-07 11:48
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述: 在项目环境中,使用springboot2.7.0作为后端,vue作为前端,部署在iis上,.net framework4.6,服务器为windows server 2012 r2。在上传.docx、.png、.jpg格式的文件时,没有问题,但是上传.mp4、.avi等格式的文件时会出现异常,抛出以下错误信息: org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: java.io.IOException: 远程主机强迫关闭了一个现有的连接。 Caused by: java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: java.io.IOException: 远程主机强迫关闭了一个现有的连接。 问题解决: 在文件上传时,需要配置上传文件的大小等信息,以确保上传的文件不会超出服务器的承载能力,并且要对文件类型进行限制。
    1. 配置文件上传大小 在 application.properties 文件中添加以下配置:

    单个上传文件的最大字节数

    spring.http.multipart.max-file-size=128MB

    整个 multipart/form-data 请求的最大字节数

    spring.http.multipart.max-request-size=256MB 2. 配置文件上传类型限制 在 Spring Boot 应用的配置类中添加以下配置: @Configuration public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
    
    /**
     * 文件上传类型限制
     */
    @Bean
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(10485760);//10MB
        multipartResolver.setDefaultEncoding("UTF-8");
        //限制文件上传类型
        MultipartFilter multipartFilter = new MultipartFilter();
        multipartFilter.setMultipartResolverBeanName("multipartResolver");
        ServletRegistrationBean registration = new ServletRegistrationBean(new DispatcherServlet(), "/");
        registration.setName("MultipartFilter");
        registration.addInitParameter("multipartResolverBeanName", "multipartResolver");
        registration.addUrlMappings("/file/upload/**", "/file/download/**");
        registration.setMultipartConfig(new MultipartConfigElement("/", 20971520, 41943040, 2097152));
        return multipartResolver;
    }
    

    } 在 MultipartResolver 中配置限制上传文件大小,并且通过注册 DispatcherServlet 来添加 MultipartFilter。在 MultipartFilter 中指定文件上传的 URL 路径,并设置限制上传文件的类型。这里设置上传文件最大大小限制为10MB,上传文件类型为.jpg、.png、.docx格式。最大上传文件大小为 20MB,最大内存大小为 4MB。 以上配置代码只是一个示例,实际开发中应根据项目需要进行具体的配置。 参考资料: 1. Spring Boot文件上传实现方案详解 2. SpringMVC实现带有过滤器的文件上传和下载 3. CommonsMultipartResolver官方文档

    评论

报告相同问题?

问题事件

  • 创建了问题 5月7日