SpringBoot+Vue实现文件的上传下载(含多文件、文件夹)

前言

(๑╹◡╹)ノ” 各位老铁好~

最近在写一个关于文件的上传下载的小Demo。本来打算把项目放到GitHub上的,但我仔细一想觉得核心功能就一点点,完全没必要呀。所以我就整理了一下,写个博客,贴贴核心代码,给各位老铁参考参考,如果有帮助的话,求个赞~

项目架构简单介绍下,SpringBoot写的接口,Thymeleaf写的前端,后面考虑到要前后端分离,就整了个Vue。

1. 文件上传核心代码

(1)后端接口

@PostMapping(value = "/upload")
public void uploadFile(@RequestParam("files") MultipartFile[] files) throws IOException {
   
    // 1. 用数组MultipartFile[]来表示多文件,所以遍历数组,对其中的文件进行逐一操作
    for (MultipartFile file : files) {
   
        // 2. 通过一顿file.getXXX()的操作,获取文件信息。
        // 2.1 这里用文件名举个栗子
        String filename = file.getOriginalFilename();
        // 3. 接下来调用方法来保存文件到本地磁盘,返回的是保存后的文件路径
        String filePath = savaFileByNio((FileInputStream) file.getInputStream(), filename);
        // 4. 保存文件信息到数据库
        // 4.1 搞个实体类,把你需要的文件信息保存到实体类中
        // 4.2 调用Service层或者Dao层,保存数据库即可。
    }
}

public static String savaFileByNio(FileInputStream fis, String fileName) {
   
    // 这个路径最后是在: 你的项目路径/FileSpace  也就是和src同级
    String fileSpace = System.getProperty("user.dir") + File.separator + "FileSpace";
    String path = fileSpace + File.separator + fileName;
    // 判断父文件夹是否存在
    File file = new File(path);
    if (file.getParentFile() != null || !file.getParentFile().isDirectory()) {
   
        file.getParentFile().mkdirs();
    }
    // 通过NIO保存文件到本地磁盘
    try {
   
        FileOutputStream fos = new FileOutputStream(path);
        FileChannel inChannel = fis.getChannel();
        FileChannel outChannel = fos.getChannel();
        inChannel.transferTo(0, inChannel.size(
  • 17
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值