上传图片的方法(大白话讲解)

2023-11-05

上传图片的方法

  • 在上传文件的时候需要知道其原理,因为我们的数据库是无法存储数据的,所以我们只能使用地址来找,所以数据库中应该村的是文件路径
  • 其次上传图片是属于上传文件的一种方式,所以也要学会上传文件的方法
  • 在之后呢也要注意上传图片和对象的关联

1,上传文件

@PostMapping("/file/{id}")
    public String fileUpload(@RequestParam(value = "file") MultipartFile file,@PathVariable("id")Integer id) {
        //首先判断输入的文件是否为空,如果是空就返回file页面
        if (file.isEmpty()) {
            System.out.println("文件为空空");
            return "file";
        }
        String fileName = file.getOriginalFilename();  // 文件名
        String filePath = "E:\\作业\\book\\src\\main\\resources\\static\\img\\"; // 上传后的路径
        File dest = new File(filePath + fileName);
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        try {
            file.transferTo(dest);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Book book1 = bookDao.zym_1913040747_queryBookById(id);
        book1.setZym_1913040747_bookPath("img/" + fileName);
        System.out.println(book1.getZym_1913040747_bookPath());
        return "redirect:/books";
    }
  • 上传文件的步骤

    • 第一步就是传入参数MultipartFile类型,表示是一个文件,以及id值,对应的去找对应的对象。
    • 判断传入的文件是不是空的,如果是空的就继续跳转到这个页面
    • 之后查出文件的名字和上传的路径
    • getParentFile()方法是返回了一个指向了 包含该文件的文件夹的对象,exists()是判断是否存在的,所以要先去判断是否有这个对象的文件夹存在,如果有的话就可以直接使用,没有就去创建
    • 有了文件之后那就是要文件上传了,使用transferTo(dest)方法将上传文件写到服务器上指定的文件;
  • 这里呢文件上传就已经完成了

  • 开始解决第二个问题,就是如何讲图片和对象相互关联呢?这里呢我以我的一个练手项目举例(注意我没有用数据库,是用map集合存的数据)

    • 前端在插入文件的时候可以获取到这个书的id值,传给后端(这里会报红但是并不影响我们正常使用)

      <form th:action="@{/file/}+${book.getZym_1913040747_bookId}" method="post" enctype="multipart/form-data">
          <label>上传图片</label>
          <input type="file" name="file">
          <input type="submit" name="上传">
      </form>
      
    • 然后后台通过RESTFUl风格获取到到id,然后通过id再去找这个书的对象,然后通过set对象获取到这个对象.图片路径的属性

      Book book1 = bookDao.zym_1913040747_queryBookById(id);
      book1.setZym_1913040747_bookPath("img/" + fileName);//这里的话加img属性的话就可以直接直接通过相对路径去找到
      
  • 开始最重要的一步,资源路径映射(在这里踩坑了)

    • 要在自己配置的congfig的配置类中加上一个资源路径的映射,否则无法找到这个资源

      //访问映射路径,
      @Override
      public void addResourceHandlers(ResourceHandlerRegistry registry) {
          registry.addResourceHandler("img/**").addResourceLocations("file:E:\\作业\\book\\src\\main\\resources\\static\\img\\");
      }
      
    • 它这个其实很简短,就是我们通过img/文件名去找到的对象,但是他的真实路径其实是后面的这个路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上传图片的方法(大白话讲解) 的相关文章

随机推荐

  • Java使用Spire.Pdf实现PDF添加图片水印

    通过本文你将学到 Spire Pdf是什么 如何在项目中引入Spire Pdf依赖 项目中基于Spire Pdf实现PDF添加图片水印 一 Spire Pdf是什么 1 Spire Pdf是成都冰蓝科技有限公司开发的一款简单易用 功能强大的
  • 雨课堂 文件和磁盘练习(1)

    若某文件系统索引结点 inode 中有直接地址项和间接地址项 与单个文件长度有关的因素是 间接地址索引的级数 地址项的个数 文件块大 与单个文件长度无关的因素是 索引结点的总数 相关解释 如果系统中有1000个 索引结点 说明有1000个物
  • 面试官:为什么Vue中的v-if和v-for不建议一起用?

    一 作用 v if 指令用于条件性地渲染一块内容 这块内容只会在指令的表达式返回 true值的时候被渲染 v for 指令基于一个数组来渲染一个列表 v for 指令需要使用 item in items 形式的特殊语法 其中 items 是
  • PID温控实验平台搭建(四)——PID温控系统实验代码讲解

    PID温控实验平台搭建 一 PID基础知识介绍 二 PID进阶知识介绍及源码分享 三 从零开始搭建STM32温控实验平台 四 PID温控系统代码讲解 五 最终实验现象与总结 文章目录 前言 一 主程序功能描述 二 部分代码讲解 1 PID程
  • 一种基于 TrustZone 的内生可信执行环境构建方法

    摘要 针对安全模块扩展技术面临的安全风险以及性能较低的问题 提出了一种基于TrustZone技术构建内生可信执行环境的方法 重点研究了计算资源隔离分配 固件可信度量 安全存储 全信任链构建等关键技术 设计了内生可信执行环境系统结构与可信计算
  • Laplace近似积分

    拉普拉斯方法又称为拉普拉斯近似 Laplace Approximation 它可以用来计算一元或多元积分 这里的思想类似于上篇博客中所讲的使用Laplace近似分布一样 这里把
  • c/c++中读入字符串(包含空格)

    1 scanf函数 scanf函数一般格式为scanf s st 但scanf默认回车和空格是输入不同组之间的间隔和结束符号 所以输入带空格 tab或者回车的字符串是不可以的 解决方法如下 利用格式符 它的作用为扫描字符集合 Scanf c
  • 【Transformer】21、AdaViT: Adaptive Tokens for Efficient Vision Transformer

    文章目录 一 背景 二 方法 三 效果 一 背景 Transformer 在多个任务上都取得了亮眼的表现 在计算机视觉中 一般是对输入图像切分成多个 patch 然后计算 patch 之间的自注意力实现下游任务 但由于自注意力机制的计算量是
  • ajax跨域session失效,request跨域获取session失效

    如下代码 传到另外一个域名就获取不到session了 localhost 12402 Home Index Session MemberUser 123456 string url api Home GetTop8FileDown stri
  • 【算法】直接插入排序解析

    活动地址 CSDN21天学习挑战赛 作者 柒号华仔 个人主页 欢迎访问我的主页 个人信条 星光不问赶路人 岁月不负有心人 个人方向 主要方向为5G 同时兼顾其他网络协议 编解码协议 C C linux 云原生等 感兴趣的小伙伴可以关注我 一
  • 正则表达式分割图片和匹配图片正则

    正则表达式分割图片 正则表达式 又称规则表达式 英语 Regular Expression 在代码中常简写为regex regexp或RE 计算机科学的一个概念 正则表达式通常被用来检索 替换那些符合某个模式 规则 的文本 正则表达式是对字
  • Centos7一点心德

    1 在centos7中发现没有table键补全的命令 需要手动去输出 效率不高 但是yum提供了自动补的命令安装 root localhost systemctl restart htt 死活补全不了 常用的命令还可以接受 碰到不常用的命令
  • 【大数据之Kafka】十三、Kafka消费者生产经验之分区的分配及再平衡、数据积压和消费者事务

    1 分区的分配及再平衡 一个consumer group中有多个consumer组成 一个 topic有多个partition组成 使用分区分配策略决定由哪个consumer来消费哪个partition的数据 Kafka有四种主流的分区分配
  • 增加tomcat并发量

    之前在做tomcat的最大并发量测试 现总结如下 tomcat默认的连接是线程阻塞的 即protocol配置为 HTTP 1 1 那么tomcat的最大连接数就受maxThreads和account的限制 maxThreads是最大的线程数
  • Altium Designer 19.1.18 - 将修改后的 PCB 封装更新到当前 PCB 中

    文章目录 将修改后的 PCB 封装更新到当前 PCB 中 参考 将修改后的 PCB 封装更新到当前 PCB 中 打开 PCB Library 选择需要更新到当前 PCB 中的 PCB 封装 使用鼠标右键选择 Update PCB With
  • 一文详解微服务架构

    要理解微服务 首先要先理解不是微服务的那些 通常跟微服务相对的是单体应用 即将所有功能都打包成在一个独立单元的应用程序 从单体应用到微服务并不是一蹴而就的 这是一个逐渐演变的过程 本文将以一个网上超市应用为例来说明这一过程 最初的需求 几年
  • 火柴棒等式 C语言

    Problem Description 给你n根火柴棍 你可以拼出多少个形如 A B C 的等式 等式中的A B C是用火柴棍拼出的整数 若该数非零 则最高位不能是0 用火柴棍拼数字0 9的拼法如图所示 注意 1 加号与等号各自需要两根火柴
  • 微信中发现的问题,做一分析(见同目录其他文)

    1 基本语法 这包括static final transient等关键字的作用 foreach循环的原理等等 今天面试我问你static关键字有哪些作用 如果你答出static修饰变量 修饰方法我会认为你合格 答出静态块 我会认为你不错 答
  • linux 网络编程---->多路复用:select实例!

    好吧 我承认找了好久 网上都没有像样的完整的实例 然后自己参照书自己写一个吧 gt server 端代码 gt server c include
  • 上传图片的方法(大白话讲解)

    上传图片的方法 在上传文件的时候需要知道其原理 因为我们的数据库是无法存储数据的 所以我们只能使用地址来找 所以数据库中应该村的是文件路径 其次上传图片是属于上传文件的一种方式 所以也要学会上传文件的方法 在之后呢也要注意上传图片和对象的关