Java上传文件并存储到MySQL数据库实现过程:
第一步创建接口层
/**
*文件接口层
*/
@RestController
@RequestMapping("/file")
public class FileController {
//引用文件业务层
@Resource
private FileService fileService;
/**
*上传文件接口
*/
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(
@RequestParam(value = "file") MultipartFile file//文件
) {
try {
fileService.upload(file);
return "成功";
} catch (Exception e) {
e.printStackTrace();
return "失败";
}
}
}
第二步创建业务层
/**
* 文件业务层
* 集成了mybatis-plus 里面包含了数据库常用的增删改成方法
*/
public interface FileService extends IService<File> {
void upload(MultipartFile file);
}
第三步创建业务实现层
/**
* 文件业务实现层
*/
@Service
public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements FileService {
@Resource
private FileMapper fileMapper;
@Override
public void upload(MultipartFile file) {
//获取当前项目所在根目录
String rootDirectory = System.getProperty("user.dir");
//如果当前项目根目录不存在(file_manage文件存储)文件夹,
// 会自动创建该文件夹用于存储项目上传的文件
java.io.File savaFile = new java.io.File(rootDirectory + "/file_manage项目文件存储/" + file.getOriginalFilename());
if (!savaFile.getParentFile().exists()) {
savaFile.getParentFile().mkdirs();
}
//如果当前名称的文件已存在则跳过
if (savaFile.exists()) {
return;
}
try {
savaFile.createNewFile();
file.transferTo(savaFile);
} catch (IOException e) {
e.printStackTrace();
}
File file1 = new File();
file1.setFileName(file.getOriginalFilename());
file1.setFilepath(rootDirectory + "/file_manage项目文件存储/" + file.getOriginalFilename());
file1.setUploadTime(new Date());
fileMapper.insert(file1);
}
}
第四步创建数据访问(Mapper)层
/**
* 数据库映射
*/
@Mapper
public interface FileMapper extends BaseMapper<File> {
}
附上数据库表对应的实体类
/**
* 文件实体类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("file_test")
public class File {
/**
* 主键id
*/
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
/**
* 文件名称
*/
@TableField("file_name")
private String fileName;
/**
* 文件路径
*/
@TableField("file_path")
private String filepath;
/**
* 上传时间
*/
@TableField("upload_time")
private Date uploadTime;
}
MySQL数据库表字段截图(表名 file_test)
感谢大家的阅读,觉得有用的朋友点点关注点点赞!