SPRINGCLOUD上传大文件的三种解决方案

SpringCloud,SpringBoot上传大文件实际上方案比较多,但是大部分都是基于HTML5,Chrome提供的API来做的。另外一咱方案是基于插件来做。

两种各有优缺点,HTML5的话就是浏览器自带了,不需要你额外安装插件,能够满足基本需求,但是兼容性差,不支持IE,可扩展性差,后期无法对其进行功能扩展,Chrome限制死了,一个域名下只允许你建5个TCP连接,插件的方案就比这个灵活多了,你可以扩展,自以自定义。

HTML5性能上也差点,对于大文件,数量多的场景性能极差。比如传100个1G的,网页就非常卡了,卡顿。插件方案就没这个问题,再多的文件性能也是稳定的。

网上搜到的SpringBoot的代码不多,完整的不多,能用的也不多,基本上大部分的文章只是提供了少量的代码,讲一下思路,或者实现方案。

之前一般的做法都是使用HTML5来做的,大部都是传文件的,传文件夹的不多。网上能够搜到的能用的不多。下来下的话,基本上都不能满足用户的 需求。或者用户在用的时候总是会遇到这样或那样的问题,维护的话也很麻烦,用户满意度比较低。

我们主要是做政府项目,客户也都是政府单位的,对用户体验要求比较高,要让他们感觉用的方便,对稳定性要求比较高,基本上一年365天都不希望你出问题,对安全性要求也比较高,涉密了,信创国产化,不能连外网的,都是内网。兼容性要求比较高,有用WIN7+IE8的,也要兼容。。

版本:6.5.40
代码:up6-jsp-springboot: Web大文件上传-jsp-springboot示例 - Gitee.com

nosql示例

nosql示例不需要进行任何配置,可以直接访问测试。

SQL示例

1.创建数据库

2.配置数据库连接

3.自动下载maven依赖

4.启动项目

启动成功

6.访问及测试

默认页面接口定义:

在浏览器中访问:

数据表中的数据

相关问题:

1.javax.servlet.http.HttpServlet错误

2.项目无法发布到tomcat

3.md5计算完毕后卡住

4.服务器找不到config.json文件

5.Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile

相关参考:

文件保存位置

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# fat FAT ,基于springboot , 使用zookeeper,redis , spring async , spring transactionManager的强一致性分布式事务解决方案 ## 框架介绍 纯编码方式,强一致性。<br> 使用redis/zookeeper作为注册中心 ,代理事务的执行,使用spring async异步处理事务线程。<br> 基于注解使用,对业务代码可以说是零入侵,目前内置适配spring-cloud(Feign调用) , dubbo。<br> 同时具备一定的扩展性与兼容性,因为存在自定义的服务框架,或者以后会涌现出更多的流行分布式服务框架,所以会提供一些组件适配自定义服务框架。 ## Maven依赖 ```java <dependency> <groupId>com.github.cjyican</groupId> <artifactId>fat-common</artifactId> <version>1.0.6-RELEASE</version> </dependency> ``` ## 使用示例 ### step0:SpringBootApplication加上@EnableFat注解 ```java @SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient @EnableFeignClients @EnableFat public class FatboyEurekaRibbonApplication { public static void main(String[] args) { SpringApplication.run(FatboyEurekaRibbonApplication.class, args); } } ``` ### step1:配置注册中心 使用redis/zookeeper作为注册中心,优先使用zookeeper。为隔离业务使用的redis和注册中心的redis,提供了一套属性配置。 在业务redis/zookeeper作为注册中心与注册中心相同时,也需要配置。 请保证各个服务的注册中心配置一致,否则无法协调分布式事务。 ```java #Fat # Redis数据库索引(默认为0) fat.redis.database=0 # Redis服务器地址 fat.redis.host= # Redis服务器连接端口 fat.redis.port=6379 # Redis服务器连接密码(默认为空) fat.redis.password= # 连接池最大连接数(使用负值表示没有限制) fat.redis.pool.max-active=20 # 连接池最大阻塞等待时间(使用负值表示没有限制) fat.redis.pool.max-wait=-1 # 连接池中的最大空闲连接 fat.redis.pool.max-idle=10 # 连接池中的最小空闲连接 fat.redis.pool.min-idle=2 # 连接超时时间(毫秒) fat.redis.timeout=1000 # 集群模式,如有配置,将优先使用集群 fat.redis.cluster.nodes=x.x.x.x:x,x.x.x.x:x # zookeeper服务器地址 fat.zookeeper.host=x.x.x.x:x,x.x.x.x:x # zookeeper活跃时间 fat.zookeeper.sessionTimeout=x.x.x.x:x,x.x.x.x:x ``` 应用标识,与spirng.application.name一致,必须配置 ```java spring.application.name=fatboy-eureka-ribbon ``` ### step2:服务入口方法加入注解@FatServiceRegister注册 在需要开启分布式事务管理的入口方法中加入注解@FatServiceRegister,注意不要重复添加。dubbo的直接加在serviceImpl.method上面就可以 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
spring boot 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、rabbitmq、activemq、elasticsearch、security、shiro等 #### Spring Boot 版本 - 2.0.3.RELEASE #### 模块说明 - springboot-basic - Spring Boot 基础知识,包括SpringBoot起步、配置详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - springboot-data - Spring Boot 数据库操作,包括SpringJDBC、JPA、Mybatis注解版 & XML版、MongoDB。其中,每个版本都有其对应的多数据源解决方案。 - springboot-caches - Spring Boot 缓存,包括redis、ehcache、spring-cache、memcached、使用redis实现session共享 等。 - springboot-templates - Spring Boot 模板,包括thymeleaf、freemarker、jsp、表单校验 等。 - springboot-docs - Spring Boot 文档生成工具,包括 Swagger、Spring RestDocs - springboot-bussiness - Spring Boot 业务应用,包括 定时任务、上传文件、发送邮件、Doc文档操作 等。 - springboot-ajax - Spring Boot AJAX 跨域,包括 JSONP、Node.js与SpringBoot集成使用反向代理 等。 - springboot-websockets - Spring Boot 使用 Websocket - springboot-webflux - Spring Boot 集成 WebFlux 开发反应式 Web 应用 - springboot-dubbo - Spring Boot 集成 Dubbo 的三种方式 - springboot-search - Spring Boot 集成 搜索引擎,包括 elasticsearch、solr - springboot-mq - Spring Boot 集成 消息队列,包括 kafka、rabbitmq、activemq、rocketmq、redismq - springboot-auth - Spring Boot 权限认证,包括 Apache Shiro、Spring Security - springboot-cloud - Spring Cloud 入门,包括 Eureka(服务注册与发现)、Config(配置中心)、Hystrix(断路器)、Bus(消息总线) 等
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
以下是基于Spring Cloud Alibaba解决方案实现文件上传的步骤: 1.添加依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.1.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.1.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-oss</artifactId> <version>2.2.1.RELEASE</version> </dependency> ``` 2.配置文件 在application.yml文件中添加以下配置: ```yaml spring: application: name: file-upload-service cloud: nacos: discovery: server-addr: localhost:8848 config: server-addr: localhost:8848 file-extension: yaml group: DEFAULT_GROUP namespace: 5f6d7c9c-7d3e-4c5a-8d5c-5d7d7d7d7d7d refreshable-dataids: file-upload-service.yaml alibaba: oss: endpoint: oss-cn-hangzhou.aliyuncs.com access-key: <your-access-key> secret-key: <your-secret-key> bucket-name: <your-bucket-name> ``` 3.编写代码 创建一个名为FileUploadController的控制器类,其中包含一个名为upload的方法,用于处理文件上传请求。代码如下: ```java @RestController public class FileUploadController { @Autowired private OSS ossClient; @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws IOException { String fileName = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); ossClient.putObject("<your-bucket-name>", fileName, inputStream); return "success"; } } ``` 4.启动应用程序 在终端中运行以下命令启动应用程序: ```shell mvn spring-boot:run ``` 5.测试文件上传 使用Postman等工具向http://localhost:8080/upload发送POST请求,选择一个文件并发送请求。如果一切正常,文件将被上传到阿里云OSS中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值