这是一个基于Spring Boot开发的文件管理系统,提供文件的上传、下载、删除和列表展示功能。系统采用前后端分离架构,前端使用HTML/CSS/JavaScript,后端使用Spring Boot + Spring Data JPA + MySQL。
- 后端框架: Spring Boot 2.7.15
- 数据访问: Spring Data JPA
- 数据库: MySQL 8.0.33
- 前端技术: HTML5, CSS3, JavaScript (原生)
- 构建工具: Maven
- Java版本: 1.8
src/
├── main/
│ ├── java/com/example/filemanagement/
│ │ ├── config/ # 配置类
│ │ ├── controller/ # 控制器层
│ │ ├── entity/ # 实体类
│ │ ├── exception/ # 异常处理
│ │ ├── repository/ # 数据访问层
│ │ └── service/ # 业务逻辑层
│ └── resources/
│ ├── static/ # 静态资源(前端页面)
│ ├── db/ # 数据库脚本
│ └── application.yml # 配置文件
- 文件上传: 支持各种类型文件的上传,文件大小限制为10MB
- 文件下载: 支持文件下载,正确处理中文文件名
- 文件删除: 支持删除已上传的文件
- 文件列表: 展示所有已上传文件的列表
- 文件信息展示: 显示文件名、大小、类型、上传时间等信息
- 服务端口: 8080
- 基础路径:
/api/files - 跨域支持: 已配置CORS,支持跨域请求
POST /api/files/upload
Content-Type: multipart/form-data
参数:
- file: 文件对象 (必填)
响应:
{
"code": 200,
"message": "success",
"data": {
"id": "文件ID",
"fileName": "存储文件名",
"originalFileName": "原始文件名",
"fileType": "文件类型",
"fileSize": 文件大小,
"filePath": "文件路径",
"uploadTime": "上传时间"
}
}
GET /api/files
响应:
{
"code": 200,
"message": "success",
"data": [
{
"id": "文件ID",
"fileName": "存储文件名",
"originalFileName": "原始文件名",
"fileType": "文件类型",
"fileSize": 文件大小,
"filePath": "文件路径",
"uploadTime": "上传时间"
}
]
}
GET /api/files/download/{id}
参数:
- id: 文件ID (路径参数)
响应:
- 文件内容流下载
- Content-Disposition: attachment; filename*=UTF-8''{编码后的文件名}
DELETE /api/files/{id}
参数:
- id: 文件ID (路径参数)
响应:
{
"code": 200,
"message": "success",
"data": true
}
| 状态码 | 说明 |
|---|---|
| 200 | 操作成功 |
| 400 | 请求参数错误 |
| 404 | 文件不存在 |
| 413 | 文件大小超过限制 |
| 500 | 服务器内部错误 |
CREATE TABLE file_info (
id VARCHAR(36) NOT NULL COMMENT '文件唯一标识UUID',
file_name VARCHAR(255) NOT NULL COMMENT '存储的文件名',
original_file_name VARCHAR(255) NOT NULL COMMENT '原始文件名',
file_type VARCHAR(50) NOT NULL COMMENT '文件类型(不含点号)',
file_size BIGINT NOT NULL COMMENT '文件大小(字节)',
file_path VARCHAR(500) NOT NULL COMMENT '文件存储路径',
upload_time DATETIME NOT NULL COMMENT '上传时间',
PRIMARY KEY (id),
INDEX idx_upload_time (upload_time),
INDEX idx_file_name (file_name),
INDEX idx_file_type (file_type)
);CREATE TABLE file_operation_log (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
file_id VARCHAR(36) NOT NULL COMMENT '关联的文件ID',
operation_type VARCHAR(20) NOT NULL COMMENT '操作类型:UPLOAD/DOWNLOAD/DELETE',
operation_time DATETIME NOT NULL DEFAULT NOW() COMMENT '操作时间',
ip_address VARCHAR(50) COMMENT '操作用户IP',
user_agent VARCHAR(500) COMMENT '用户代理信息',
INDEX idx_file_id (file_id),
INDEX idx_operation_time (operation_time),
INDEX idx_operation_type (operation_type),
FOREIGN KEY (file_id) REFERENCES file_info(id) ON DELETE CASCADE
);server:
port: 8080
spring:
servlet:
multipart:
max-file-size: 10MB # 单个文件最大大小
max-request-size: 10MB # 整个请求最大大小
datasource:
url: jdbc:mysql://101.42.255.221:3309/file_management?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: L#QZLry14171609*.
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update # 自动更新数据库结构
show-sql: true # 显示SQL语句
file:
upload-dir: d:/uploads # 文件上传存储路径- Java 1.8+
- Maven 3.6+
- MySQL 8.0+
CREATE DATABASE file_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE file_management;
-- 执行 src/main/resources/db/init.sql 中的建表语句编辑 src/main/resources/application.yml,修改数据库连接信息和文件存储路径。
# 编译项目
mvn clean compile
# 运行项目
mvn spring-boot:run
# 或者直接运行jar包
java -jar target/file-management-1.0.0.jar打开浏览器访问: http://localhost:8080/index.html
- 上传文件: 点击"选择文件"按钮选择要上传的文件,然后点击"上传文件"
- 下载文件: 在文件列表中点击对应文件的"下载"按钮
- 删除文件: 在文件列表中点击对应文件的"删除"按钮,确认后删除
- 查看文件信息: 文件列表中显示文件名、大小、类型和上传时间
- 确保上传目录存在且有写入权限
- 数据库连接信息需要正确配置
- 文件大小限制为10MB,可在配置文件中修改
- 支持跨域访问,已配置CORS
系统预留了文件操作日志功能,可以记录文件的上传、下载、删除操作,便于后续的功能扩展和审计需求。