【SpringBoot学习】5、SpringBoot 实现文件上传,图片上传并显示功能[通俗易懂]

【SpringBoot学习】5、SpringBoot 实现文件上传,图片上传并显示功能[通俗易懂]我先看一下《颈椎病康复指南》再给大家说怎么实现的这两个功能,毕竟只是一个新手,解决这种复杂点的问题(相对而言),还是需要花费大量时间的,这篇文章花了两天的时间才实现的功能,现在就记录一下使用springboot怎么实现文件上传下载的。我这里使用的是springboot2.0.3,不需要导入相关jar包,2.x的版本已经整合进去了,直接使用即可。spring官网提供了springbo…

大家好,又见面了,我是你们的朋友全栈君。

SpringBoot 实现文件上传,图片上传并显示功能

我先看一下《颈椎病康复指南》再给大家说怎么实现的这两个功能,毕竟只是一个新手,解决这种复杂点的问题(相对而言),还是需要花费大量时间的,这篇文章花了两天的时间才实现的功能,现在就记录一下使用 springboot 怎么实现文件上传下载的。

我这里使用的是 springboot 2.0.3,不需要导入相关 jar 包,2.x 的版本已经整合进去了,直接使用即可。

spring 官网提供了 springboot 的文件上传下载案例,这是网址:https://spring.io/guides/gs/uploading-files/,使用的是流的输出,对于我这个新手来说,直接不理解,所以略过,通过网上查阅大量资料,终于把问题解决了。下面的案例是 springboot2.x 图片上传与回显。我使用的工具是 idea。

1、创建 idea 默认的 springboot 项目,我的版本是 2.0.3

2、创建一个控制层 FileController

package com.rainy.controller;

import org.apache.catalina.servlet4preview.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.util.UUID;

/** * 文件上传 */
@Controller
public class FileController { 
   

    @GetMapping(value = "/file")
    public String file() { 
   
        return "file";
    }

    @PostMapping(value = "/fileUpload")
    public String fileUpload(@RequestParam(value = "file") MultipartFile file, Model model, HttpServletRequest request) { 
   
        if (file.isEmpty()) { 
   
            System.out.println("文件为空空");
        }
        String fileName = file.getOriginalFilename();  // 文件名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));  // 后缀名
        String filePath = "D://temp-rainy//"; // 上传后的路径
        fileName = UUID.randomUUID() + suffixName; // 新文件名
        File dest = new File(filePath + fileName);
        if (!dest.getParentFile().exists()) { 
   
            dest.getParentFile().mkdirs();
        }
        try { 
   
            file.transferTo(dest);
        } catch (IOException e) { 
   
            e.printStackTrace();
        }
        String filename = "/temp-rainy/" + fileName;
        model.addAttribute("filename", filename);
        return "file";
    }
}

3、创建 MyWebMvcConfigurer,这里是配置资源映射路径,详细点的介绍看这篇文章:https://blog.csdn.net/qq_38762237/article/details/81283241

/** * 资源映射路径 */
@Configuration
public class MyWebAppConfigurer implements WebMvcConfigurer { 
   
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
   
        registry.addResourceHandler("/temp-rainy/**").addResourceLocations("file:D:/temp-rainy/");
    }
}

4、jsp 页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/fileUpload" method="post" enctype="multipart/form-data">
        <label>上传图片</label>
        <input type="file" name="file"/>
        <input type="submit" value="上传"/>
    </form>
    <p>图片:</p>
    <img src="${filename }"/>
</body>
</html>

注意一点:我是使用 jsp 引擎来渲染,因为我不会用 Thymeleaf,添加 jsp 页面,springboot 使用 jsp 页面是需要进行配置 jsp 整合的,默认的是 Thymeleaf 的页面,简单的就是 HTML 页面

springboot 配置 jsp 页面的方法:https://blog.csdn.net/qq_38762237/article/details/81283352

这里写图片描述

推荐阅读:Spring Cloud Alibaba

微信公众号

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130082.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月27日 下午6:20
下一篇 2022年4月27日 下午7:20


相关推荐

  • java局域网组建与维护题_局域网组建与维护习题(有答案).doc

    java局域网组建与维护题_局域网组建与维护习题(有答案).doc局域网组建与维护实用教程一、填空题计算机网络中常用的三种有线通信介质是双绞线、同轴电缆、光纤。局域网的英文缩写为LAN,城域网的英文缩写为_MAN_,广域网的英文缩写为WAN。计算机网络的功能主要表现在硬件资源共享、软件资源共享、数据资源共享。决定局域网特性的主要技术要素为媒体访问控制方式、拓扑结构、传输介质。计算机网络是现代_计算机_技术与通信技术密切组合的产物。局域网常用的拓扑结构有总…

    2025年7月28日
    4
  • 常见端口渗透总结[通俗易懂]

    常见端口渗透总结[通俗易懂]文章目录0x00背景服务默认端口爆破0x01实战测试文件共享服务端口渗透ftp服务NFS服务Samba服务LDAP协议远程连接服务端口渗透SSH服务Telnet服务Windows远程连接VNC服务Pcanywhere服务Web应用服务端口渗透IIS服务Apache/Tomcat/Nginx/Axis2WebLogicJbossWebsphereGlassFishJenkinsResinJettyLotus数据库服务端口渗透MySQL数据库MSSQL数据库Oracle数据库PostgreSQL数据库Mon

    2025年11月3日
    5
  • 【python实战】爬虫封你ip就不会了?ip代理池安排上「建议收藏」

    【python实战】爬虫封你ip就不会了?ip代理池安排上「建议收藏」可以干好多事情,比如……

    2022年6月10日
    35
  • java之父

    java之父《Java》之父——詹姆斯·高斯林和麦克·舍林丹也加入了帕特里克的工作小组。他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,SUN公司预料未来科技将在家用电器领域大显身手。团队最初考虑使用C语言,但是很多成员包括SUN的首席科学家比尔·乔伊,发现C和可用的API在某些方面存在很大问题。工作小组

    2022年7月7日
    33
  • SpringCloud微服务架构体系

    SpringCloud微服务架构体系转自 https dalin blog csdn net article details 什么是微服务 1 1 架构演进架构的发展历程是从单体式架构 到分布式架构 到 SOA 架构 再到微服务架构 图 1 架构演进 单体架构 未做任何拆分的 JavaWeb 程序 图 2 单体架构示意图 分布式架构 按照业务垂直划分 每个业务都是单体架构 通过 API 互相调用 图 3 分布式架构示意图 SOA 架构 SOA 是一种面向服务的架构 其应用程序的不同组件通

    2026年3月18日
    1
  • 科学计算编程语言_中国发明了什么编程语言

    科学计算编程语言_中国发明了什么编程语言本文是《打破国外垄断,开发中国人自己的编程语言》系列文章的第1篇。本系列文章的主要目的是教大家学会如何从零开始设计一种编程语言(marvel语言),并使用marvel语言开发一些真实的项目,如移动App、Web应用等。

    2022年10月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号