一、开发环境准备与工具安装
在开始编码之前,必须确保本地开发环境已经配置好以下基础软件。请严格按照以下版本进行安装,避免因版本不兼容导致项目启动失败。
- JDK 17:Java开发工具包,用于运行后端服务。下载地址:
https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html。安装后配置环境变量JAVA_HOME。
- Maven 3.8+:项目依赖管理工具。下载地址:
https://maven.apache.org/download.cgi。解压后配置MAVEN_HOME并修改settings.xml镜像为阿里云源以加速下载。
- Node.js 18+:前端运行环境。下载地址:
https://nodejs.org/dist/v18.17.0/node-v18.17.0-x64.msi。安装完成后在终端输入npm -v验证。
- MySQL 8.0:数据存储服务。下载地址:
https://dev.mysql.com/downloads/mysql/。安装时记住设置的root密码,后续配置需要用到。
- IntelliJ IDEA:推荐使用的集成开发环境(社区版即可,也可使用Ultimate版)。
二、数据库设计与初始化
打开MySQL客户端(如Navicat或命令行),创建名为garment_db的数据库,并执行以下SQL脚本建立档案表。该表包含了服装企业核心的档案字段,如设计稿、合同、工艺单等分类。
```sql
CREATE DATABASE IF NOT EXISTS garment_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE garment_db;
CREATE TABLE garment_archive (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
file_name VARCHAR(255) NOT NULL COMMENT '文件原始名称',
file_path VARCHAR(500) NOT NULL COMMENT '文件存储路径',
category VARCHAR(50) NOT NULL COMMENT '档案分类:DESIGN(设计), CONTRACT(合同), TECH(工艺)',
file_size BIGINT DEFAULT 0 COMMENT '文件大小(字节)',
upload_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
uploader VARCHAR(100) DEFAULT 'admin' COMMENT '上传人'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服装企业档案表';
```
三、后端服务搭建(Spring Boot + JPA)
使用Spring Initializr快速构建项目。访问https://start.spring.io/,选择Maven Project,Java 17,添加Dependencies:Spring Web, Spring Data JPA, MySQL Driver, Lombok。生成项目并导入IDEA。
1. 配置文件
打开src/main/resources/application.properties,删除默认内容,填入以下完整配置。注意将your_password替换为你MySQL的root密码。
```properties
server.port=8080
spring.application.name=garment-archive-system
数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/garment_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
JPA配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
文件上传配置
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB
文件存储路径(Windows示例,Mac/Linux请修改为 /Users/username/uploads)
file.upload-dir=D:/garment-uploads
```
2. 实体类创建
在包com.example.garment.entity下创建GarmentArchive.java。
```java
package com.example.garment.entity;
import jakarta.persistence.;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@Entity
@Table(name = "garment_archive")
public class GarmentArchive {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String fileName;
private String filePath;
private String category;
private Long fileSize;
@Column(name = "upload_time")
private LocalDateTime uploadTime;
private String uploader;
}
```
3. 数据层与控制层
在com.example.garment.repository下创建接口:
```java
package com.example.garment.repository;
import com.example.garment.entity.GarmentArchive;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface GarmentArchiveRepository extends JpaRepository
{
}
```
在com.example.garment.controller下创建控制器ArchiveController.java,实现文件上传和列表查询接口。为了方便操作,文件将直接存储在本地磁盘。
```java
package com.example.garment.controller;
import com.example.garment.entity.GarmentArchive;
import com.example.garment.repository.GarmentArchiveRepository;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@RestController
@RequestMapping("/api/archive")
@CrossOrigin(origins = "")
public class ArchiveController {
@Value("${file.upload-dir}")
private String uploadDir;
private final GarmentArchiveRepository repository;
public ArchiveController(GarmentArchiveRepository repository) {
this.repository = repository;
}
@PostMapping("/upload")
public Map uploadFile(@RequestParam("file") MultipartFile file,
@RequestParam("category") String category) {
Map result = new HashMap<>();
try {
// 创建上传目录
File dir = new File(uploadDir);
if (!dir.exists()) dir.mkdirs();
// 生成唯一文件名
String originalFilename = file.getOriginalFilename();
String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
String newFileName = UUID.randomUUID().toString() + extension;
Path path = Paths.get(uploadDir, newFileName);
// 保存文件
Files.write(path, file.getBytes());
// 保存数据库记录
GarmentArchive archive = new GarmentArchive();
archive.setFileName(originalFilename);
archive.setFilePath(path.toString());
archive.setCategory(category);
archive.setFileSize(file.getSize());
archive.setUploadTime(LocalDateTime.now());
archive.setUploader("admin");
repository.save(archive);
result.put("code", 200);
result.put("message", "上传成功");
result.put("data", archive);
} catch (IOException e) {
result.put("code", 500);
result.put("message", "上传失败: " + e.getMessage());
}
return result;
}
@GetMapping("/list")
public List list() {
return repository.findAll();
}
}
```
四、前端页面开发(Vue 3 + Element Plus)
后端启动后,我们构建前端界面。打开终端,进入工作目录,执行以下命令创建Vue项目。
1. 初始化项目
执行:npm create vue@latest garment-admin。安装过程中选择添加Router和Pinia(默认选项即可)。进入目录:cd garment-admin。安装依赖:npm install。
2. 安装UI组件库和HTTP客户端
执行:npm install element-plus axios。

3. 修改入口文件
打开src/main.js,引入Element Plus样式和组件:
```javascript
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
const app = createApp(App)
app.use(ElementPlus)
app.mount('app')
```
4. 编写主页面组件
直接修改src/App.vue,实现一个包含上传表格和档案列表的完整页面。代码包含完整的逻辑处理,无需额外配置路由。
```html
服装企业档案管理系统
档案上传
拖拽文件到此处或 点击上传
请上传 jpg/png/pdf 文件,且不超过 50MB
档案列表
设计稿
合同文档
工艺单
{{ (scope.row.fileSize / 1024).toFixed(2) }}
```
五、系统启动与验证
代码编写完毕,现在启动整个系统进行验证。
1. 启动后端
在IDEA中找到GarmentArchiveSystemApplication.java(包含main方法的类),右键点击Run。观察控制台日志,看到Started GarmentArchiveSystemApplication即表示启动成功,端口默认为8080。
2. 启动前端
在终端进入garment-admin目录,执行命令:npm run dev。终端会输出Local地址,通常是http://localhost:5173。
3. 功能测试
打开浏览器访问前端地址。你应该能看到一个带有“档案上传”和“档案列表”卡片的页面。
- 点击上传区域,选择一张本地图片。
- 在右上角下拉框选择“设计稿”。
- 松开鼠标,观察进度条走完,提示“上传成功”。
- 下方表格会自动刷新,显示刚刚上传的文件记录,包括文件名、大小和分类标签。
此时,去你配置的本地目录(如D:/garment-uploads)查看,文件已经成功保存到磁盘。至此,一个具备基本文件上传、分类存储和列表展示功能的服装企业档案管理系统已经完全落地。