Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring上载的最大大小限制_Java_Spring_Upload Max Filesize - Fatal编程技术网

Java Spring上载的最大大小限制

Java Spring上载的最大大小限制,java,spring,upload-max-filesize,Java,Spring,Upload Max Filesize,我试图将文件上传到我的控制器 这是我的控制器的上部。它的工作,直到我达到我的最大要求大小+-2MB > @RequestMapping(value = {"/runlocalfiles"}, method = > RequestMethod.POST, produces = "application/json") > @ResponseBody > @CrossOrigin(origins = "http://localhost:4200") >

我试图将文件上传到我的控制器

这是我的控制器的上部。它的工作,直到我达到我的最大要求大小+-2MB

> @RequestMapping(value = {"/runlocalfiles"}, method =
> RequestMethod.POST, produces = "application/json")
>     @ResponseBody
>     @CrossOrigin(origins = "http://localhost:4200")
>     public ResponseEntity run( HttpServletRequest request) {
>         String jsonBase64Files = request.getParameter("base64files");
>         String jsonChecks = request.getParameter("checks");
浏览器中的错误消息:

> Failed to load http://localhost:5001/runlocalfiles: No
> 'Access-Control-Allow-Origin' header is present on the requested
> resource. Origin 'http://localhost:4200' is therefore not allowed
> access. The response had HTTP status code 500.
Java控制台中的错误:

> java.lang.IllegalStateException: The multi-part request contained
> parameter data (excluding uploaded files) that exceeded the limit for
> maxPostSize set on the associated connector   at
> org.apache.catalina.connector.Request.parseParts(Request.java:2893)
> ~[tomcat-embed-core-8.5.20.jar:8.5.20]...
我试图通过在application.properties中添加新行来增加上传大小。还尝试将-1更改为例如100MB

> spring.servlet.multipart.max-file-size= -1
> spring.servlet.multipart.max-request-size= -1
> spring.http.multipart.max-file-size = -1
> spring.http.multipart.max-request-size= -1

任何帮助都是必需的。

如果您使用的是Spring Boot和嵌入式tomcat,您可以尝试以下方法:

@SpringBootApplication  
public class SpringBootWebApplication {  

    //private int maxUploadFileSize = 10 * 1024 * 1024;  

    public static void main(String[] args) throws Exception {  
        SpringApplication.run(SpringBootWebApplication.class, args);  
    }  


    //Tomcat large file upload connection reset  
    @Bean  
    public TomcatEmbeddedServletContainerFactory tomcatEmbedded() {  

        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();  

        tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {  
            if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {  
                //-1 means unlimited  
                ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);  
            }  
        });  

        return tomcat;  
    }  
}  

我完成了以下步骤,如教程中所述,以下属性对我非常有用:

spring.servlet.multipart.max-file-size=300MB
spring.servlet.multipart.max-request-size=300MB
spring.http.multipart.enabled=false

所以我找到了一个有效的解决办法。我需要结合你的两种解决方案

将其添加到初始类:

// Set maxPostSize of embedded tomcat server to 10 megabytes (default is 2 MB, not large enough to support file uploads > 1.5 MB)
@Bean
EmbeddedServletContainerCustomizer containerCustomizer() throws Exception {
    return (ConfigurableEmbeddedServletContainer container) -> {
        if (container instanceof TomcatEmbeddedServletContainerFactory) {
            TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
            tomcat.addConnectorCustomizers(
                    (connector) -> {
                        connector.setMaxPostSize(100000000); // 100 MB
                    }
            );
        }
    };
}
这与应用程序属性有关:

spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB
server.tomcat.max-http-post-size=-1

试试这个,它对我有用,将它添加到应用程序属性:

spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB
server.tomcat.max-http-post-size=-1

使用上面的代码,我得到了:org.apache.tomcat.util.http.fileupload.FileUploadBase$filesIzeLimitExceedeException:字段base64文件超过了其最大允许大小1048576字节。如果我在application.properties中使用它,控制器会接受请求,但请求的内容为null。