简单实现:1.获取上传文件的输入流后生产MD5值;
2.用MD5值与源文件扩展名生成新的文件名;
3.在判断上传的目标路径下是否有这个文件名,若存在则直接返回该文件的访问路径,不存在则上传。
准备工作
1.创建数据表
DROP TABLE IF EXISTS `tb_file`;
CREATE TABLE `tb_file` (
`file_id` varchar(200) NOT NULL COMMENT '文件id',
`MD5` varchar(255) NOT NULL COMMENT '文件md5值',
`file_url` varchar(255) DEFAULT NULL COMMENT '虚拟文件路径',
`file_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件真实路径',
`file_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件名,MD5值+文件后缀',
`create_time` datetime NOT NULL COMMENT '创建时间',
`is_delete` int DEFAULT '0' COMMENT '是否删除 0否 1是',
`version` int DEFAULT NULL COMMENT '版本',
PRIMARY KEY (`file_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.相关类
File实体类:
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("tb_file")
public class File implements Serializable {
@TableId("file_id")
private String fileId;
@TableField("MD5")
private String md5;
@TableField("file_url")
private String fileUrl;
@TableField("file_path")
private String filePath;
@TableField("file_name")