当前位置:   article > 正文

fastDFS上传文件过大_fastdfs最大文件

fastdfs最大文件

在做项目时有一个上传文件的需求,文件过大时前端报错

413 Request Entity Too Large
  • 1

解决步骤

1.百度后,因为项目使用了nginx负载均衡,需要修改nginx配置文件,找到nginx.conf文件在其中增加

client_max_body_size 50m;//设置客户端请求体最大值
client_body_buffer_size 10m;//配置请求体缓存区大小

  • 1
  • 2
  • 3

具体的位置查了下,放在http{}下或者server{}下好像没什么区别,http{}中没有就会自动加载代理的server{}下。

可是,配置完后前端确实不报错了,后端又有问题了,后端接受不到请求了???

2.继续百度,发现可能跟springboot配置的文件上传大小限制有关,于是去配置application.yml文件,扩大max-file-size和max-request-size。(springboot2.0是下面的配置,老版本将servlet换成http)

 spring: 
  servlet:
    multipart:
      #默认支持文件上传.
      enabled: true
      #支持文件写入磁盘.
      file-size-threshold: 0
      # 上传文件的临时目录
      location:
      # 最大支持文件大小
      max-file-size: 50MB
      # 最大支持请求大小
      max-request-size: 50MB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

如果配置文件觉得格式很麻烦,可以在启动类以代码形式配置

@MapperScan("com.xxx.xxx.dao")
@SpringBootApplication
public class DemoApplication {

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

    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        //文件最大
        factory.setMaxFileSize(DataSize.parse("50MB"));
        //设置总上传数据总大小
        factory.setMaxRequestSize(DataSize.parse("50MB"));
        return factory.createMultipartConfig();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

配置后 后端可以收到请求了,但是文件上传时又报错了…报错信息为

java.netSocketTimeoutException:Read timed out
  • 1

3.根据报错信息知道是连接超时,我的需求是需要将文件上传到fastdfs文件系统中,然后将信息写入到mysql中,而因为文件过大,自然过程就慢了,所以需要去application.yml配置下连接池的超时时间

spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/alumnihome?serverTimezone=GMT%2B8
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
      initial-size: 5 #初始建立连接数量
      min-idle: 5 #最小连接数量
      max-active: 20  #最大连接数量
      max-wait: 10000 #获取连接最大等待时间,毫秒
      test-on-borrow: true  #申请连接时检测连接是否有效
      test-on-return: false #归还连接时检测连接是否有效
      time-between-eviction-runs-millis: 60000  #配置间隔检测连接是否有效的时间(单位是毫秒)
      min-evictable-idle-time-millis: 300000 #连接在连接池的最小生存时间(毫秒)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

将其中的min-evictable-idle-time-millis即 连接在连接池的最小生存时间增加,我直接加了个0,然后文件成功上传,解决问题~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/170117
推荐阅读
相关标签
  

闽ICP备14008679号