【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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用idea创建javaweb项目详解_idea怎么创建普通java项目

    用idea创建javaweb项目详解_idea怎么创建普通java项目文章目录一、创建web项目1、打开idea软件,点击界面上的CreateNewProject2、进入如下界面。选中javaEnterprise,配置jdk,tomcat,勾选WebApplication案例,注意勾选生成web.xml文件3、指定项目的名称及项目文件的保存地址4、创建成功5、创建class文件和lib文件夹  点击项目的WEF-INF文件夹,右…

    2022年9月20日
    4
  • Python 环境安装教程(Windows)

    写于2018-2-6  没错,我就是连安装Python环境都要教程的人QAQ,毕竟我打开英文页面一脸懵逼,然后还去偷偷查教程,,Ծ‸Ծ,,。  1.Python下载链接,点击链接,然后选择Windows下载页面。    2.红箭头指的是不同版本这个肯定知道吧,然后x64系统的就下载红框框里的这个名字的文件。下载时也可以下载zip的版本(Windowsx86-64e

    2022年4月9日
    41
  • Oracle数据库入门心得[通俗易懂]

    Oracle数据库入门心得[通俗易懂]Oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。  一、定位  oracle分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,

    2022年10月20日
    3
  • java开发常用四大框架_Java 后台开发框架[通俗易懂]

    java开发常用四大框架_Java 后台开发框架[通俗易懂]UWeb框架中集成了权限管理、模块管理,数据库管理、富文本编辑器(已集成ueditor,kindeditor),后台支持多主题切换、布局管理、广告管理、配置管理、字典管理、切图管理、CMS内容管理等常用功能模块,以方便开发者快速构建自己的应用。框架专注于为中小企业提供最佳的行业基础后台框架解决方案,执行效率、扩展性、稳定性值得信赖,操作体验流畅,使用非常优化,欢迎大家使用及进行二次开发。项目介绍1…

    2022年7月9日
    18
  • Linux安装Composer

    Linux安装Composer

    2021年10月26日
    51
  • 【sed】个人用到的方法记录[通俗易懂]

    【sed】个人用到的方法记录

    2022年3月12日
    44

发表回复

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

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