当前位置: 首页 > article >正文

文件上传功能(一)

总说

过程参考黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili

目录

总说

一、功能实现

1.1 Controller层

二、优化


一、功能实现

1.1 Controller层

在contoller层,创建一个FileUploadController

在桌面创建一个文件夹,命名files

同时复制文件夹路径,如下图:

FileUploadController代码如下:

@RestController
public class FileUploadController {

    @PostMapping("/upload")
    public Result<String> upload(MultipartFile file) throws IOException { //MultipartFile file 用来接收上传的文件
        //把文件的内容存到本地磁盘上
        String originFilename = file.getOriginalFilename();// 获取原始文件名
        file.transferTo(new File("C:\\Users\\86176\\Desktop\\files\\" + originFilename));//将接收到的文件内容写入到本地磁盘上
        return Result.success("url访问地址....");
    }

}

测试一下:

图片随便上传一个即可

上传成功:

同时在我们的目标路径下,我们可以看到图片已经传进去了

二、优化

但是存在一个bug,同一个文件上传会覆盖,而不是2个文件

是因为我们上传的是原始文件名,所以我们要保证文件的名字要是唯一的,从而防止文件名被覆盖

我们修改FileUploadController代码如下:

@RestController
public class FileUploadController {

    @PostMapping("/upload")
    public Result<String> upload(MultipartFile file) throws IOException { //MultipartFile file 用来接收上传的文件
        //把文件的内容存到本地磁盘上
        String originFilename = file.getOriginalFilename();// 获取原始文件名
        //保证文件的名字唯一,防止文件名被覆盖
        //用UUID.randomUUID().toString() 生成一个随机的字符串 + 原始文件名后缀
        String fileName = UUID.randomUUID().toString() + originFilename.substring(originFilename.lastIndexOf("."));
        file.transferTo(new File("C:\\Users\\86176\\Desktop\\files\\" + fileName));//将接收到的文件内容写入到本地磁盘上
        return Result.success("url访问地址....");
    }

}

重新启动,进行测试

我们查看目的文件夹,如下:

这样就解决了文件覆盖问题


http://www.kler.cn/a/527834.html

相关文章:

  • 程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<2>
  • 【C语言】内存管理
  • React第二十八章(css modules)
  • Day48:获取字典键的值
  • 服务器虚拟化实战:架构、技术与最佳实践
  • [HOT 100] 0003. 无重复字符的最长子串
  • 抽象类与抽象方法详解
  • Matrials studio 软件安装步骤(百度网盘链接)
  • 【RocketMQ 存储】- broker 端存储批量消息的逻辑
  • CE-PBFT:大规模联盟区块链的高可用一致性算法
  • Unet 改进:在encoder和decoder间加入TransformerBlock
  • 【leetcode强化练习·二叉树】同时运用两种思维解题
  • 【Java异步编程】CompletableFuture基础(1):创建不同线程的子任务、子任务链式调用与异常处理
  • 黑马点评 - 商铺类型缓存练习题(Redis List实现)
  • Hive:复杂数据类型之Map函数
  • 深度学习之“数据的相关性”
  • 人工智能导论--第1章-知识点与学习笔记
  • 用一个例子详细说明python单例模式
  • 【AI论文】VideoAuteur:迈向长叙事视频
  • gentoo linux中安装希沃白板5
  • Docker技术简介
  • Longformer:处理长文档的Transformer模型
  • 6.二分算法
  • 舵机型号与识别
  • Go学习:Go语言中if、switch、for语句与其他编程语言中相应语句的格式区别
  • 三天急速通关JavaWeb基础知识:Day 2 前端基础知识(计划有变,前端工程化部分暂时搁置)