当前位置:网站首页 > 人工智能与大数据应用 > 正文

springboot应用服务器(springboot 文件服务器)



不积跬步,无以至千里;不积小流,无以成江海。

| @Author:TTODS

前言

本人因学习需要租了一台Liunx云服务器,为了充分利用这台云服务器,我在上面搭建了一个个人文件服务器。

它的主要用途:

  1. 可以将一些不常用但有用的文件丢到该服务器上吃灰,填出自己电脑上的磁盘空间
  2. 从个人的角度出发,由于自己电脑上有些环境没有配置,有些课程需要用到学校机房的电脑。这时就可以用该服务器来存储实验课的代码和数据,实验课开始时从服务器上取出上次上传的代码,结束后再上传新的代码上去。

系统主页截图:

功能模块简介

本系统的功能分为三个模块:文件管理、权限与安全和日志统计

文件管理
  1. 实现文件的上传、下载、预览功能。
  2. 为了避免用户误删文件导致文件丢出造成严重后果,还实现了回收站功能。
权限与安全
  1. 使用请求拦截器对用户请求进行权限验证。
  2. 使用基于TimedCache(定时缓存)和ip地址的登录保护,防止黑客恶意暴力激活成功教程密码。
日志统计
  1. 对用户的操作进行日志统计。
功能的具体实现
文件管理

在springboot的配置文件中除了常规的端口、数据源、日志配置外,还需配置文件服务器的根路径和回收站的根路径

 
  

然后在Controller层中使用注解获取配置的属性

 
  
上传功能

根据请求提交的参数,拼接出目标文件夹的路径,然后将上传的文件保存到该目录下。这里有一个小细节就是如果该目录下已存在同名文件,为了防止该文件被覆盖,可以在上传的文件名后拼接当前的时间戳。

 
  

上传文件的前端部分,我直接使用了layui的多文件上传功能,实现起来也比较简单。

在这里插入图片描述

文件预览与下载

文件预览与文件下载的功能其实差不多,直接夹文件写入response的输出流中,浏览器会根据自己能否解析该文件类型来决定是预览还是开启下载。如果是要下载支持预览的类型的文件,需要在回应头中添加一个属性,具体见代码。

文件预览代码

 
  

文件下载代码

 
  
回收站功能的实现

在文件管理中删除文件,实际上是调用了接口将文件移动到回收站路径下.而在回收站中删除文件是调用了接口,这才是真正意义上的删除文件.在回收站中还可以恢复文件,恢复文件调用的是接口。

接口代码

 
  

接口代码

 
  

接口代码

 
  
权限与安全
用户登录与基于ip地址和定时缓存的登录保护

登录流程:根据用户名和密码查询数据库,若查询到了用户信息,则说明用户名和密码正确,将用户名存入中,登录成功。

定时缓存,我这里使用了hutool提供的,存入其中的键值对过期将会消失。在用户尝试登录失败后,我们就以该请求的IP地址为键,在缓存中记录该ip的用户尝试登录失败的次数,当登录失败超过五次后则不再处理该ip的登录请求,直到缓存中的数据过期后才能重新尝试,这里设置的是30分钟。

登录代码:

 
  
使用拦截器检测用户是否登录

编写一个登录拦截器实现springboot提供的,并实现其方法。

若session中存在属性则说明用户已登录,按照正常逻辑处理请求,否则重定向到登录页面。

 
  

编写类实现springboot提供的接口,并实现方法,将我们的拦截器添加到Spring MVC的请求处理流程中。

 
  
日志统计

实现简单的日志记录,记录用户的操作。

每条日志信息包括:编号,操作,文件路径(登录操作除外),用户名,IP地址,日期

在这里插入图片描述

日志信息实体类

 
  

操作枚举类

 
  

简单的日志系统

 
  
总结

本系统实现了一个简单的个人文件服务器,功能方面还是基本满足了一个文件服务器的需求。但是由于本人水平和开发时间有限,很多地方实现的还是比较粗糙。还有一些是基于实际出发,我做这个系统的目的是想给个人使用,所以也只实现了核心的功能,向用户注册等次要功能都没有实现。写下这篇博客一是记录一下这个项目中使用到的技术,二是分享一下实现这个系统的思路,希望对有需要的人有所帮助。

项目仓库:https://gitee.com/TTODS/my-file-server

- THE END -
到此这篇springboot应用服务器(springboot 文件服务器)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 应用程序制作软件(制作软件的程序)2026-02-07 16:54:04
  • 制作软件的程序(制作软件应用)2026-02-07 16:54:04
  • 卸载快应用软件(彻底卸载快应用中心)2026-02-07 16:54:04
  • 彻底关闭快应用程序(怎么关闭快应用)2026-02-07 16:54:04
  • 免费windows10云主机(免费windows10云主机应用下载)2026-02-07 16:54:04
  • 环形队列有什么应用场景(环形队列有什么应用场景吗)2026-02-07 16:54:04
  • pass平台的优势包括(pass应用平台)2026-02-07 16:54:04
  • 快应用中心在哪里打开(快应用中心在哪里找)2026-02-07 16:54:04
  • 快程序(快程序应用中心)2026-02-07 16:54:04
  • modbus协议40001(modbus协议40001的地址应用)2026-02-07 16:54:04
  • 全屏图片