我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spring MVC 图片的上传和下载

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spring MVC 图片的上传和下载

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:SSM 框架从入门到精通
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Spring MVC 图片的上传和下载

在这里插入图片描述

序言

  SSM 框架是一种基于Java的Web开发框架,其中Spring作为控制层、SpringMVC作为视图层、MyBatis作为持久层,这个框架非常适合Web应用程序的开发。在这篇文章中,我们将使用 SSM 框架来实现图片的上传和下载功能。

  首先,我们需要准备好一个基本的SSM框架环境,也就是需要一个Tomcat服务器、Spring、SpringMVC和MyBatis等开发工具。

  接着创建一个名为Image的Java类来存储图片的信息。该类包含以下字段:id、name、path、size、createTime、type、等。

思路一:浏览器图片的上传下载显示通过本地实现

  下面我们来实现具体的功能:

1、图片上传功能

  在控制层中,我们创建一个名为UploadController的类来处理上传请求。在该类中,我们需要添加一个方法,该方法用于处理上传请求并返回上传结果。在该方法中,我们需要使用SpringMVC提供的 MultipartResolver 类来解析上传的文件,获取文件信息,并将文件保存到服务器上。以下是UploadController类中的代码:

@Controller@RequestMapping("/upload")public class UploadController {    @RequestMapping(value = "/image", method = RequestMethod.POST)    @ResponseBody    public String uploadImage(@RequestParam("file") MultipartFile file) {        String fileName = file.getOriginalFilename();        String path = "D:/uploads/" + fileName;        try {            File dest = new File(path);            if (!dest.getParentFile().exists()) {                dest.getParentFile().mkdirs();            }            file.transferTo(dest);            return "success";        } catch (Exception e) {            e.printStackTrace();            return "error";        }    }}

2、图片下载功能

  在控制层中,我们创建一个名为DownloadController的类来处理下载请求。在该类中,我们需要添加一个方法,该方法用于处理下载请求并返回下载结果。在该方法中,我们需要使用SpringMVC提供的 ResponseEntity 类来返回文件流并设置相关的头信息。以下是DownloadController类中的代码:

@Controller@RequestMapping("/download")public class DownloadController {    @RequestMapping(value = "/image/{id}", method = RequestMethod.GET)    public ResponseEntity<byte[]> downloadImage(@PathVariable("id") int id) {        Image image = imageService.getImageById(id);        String fileName = image.getName();        String path = "D:/uploads/" + fileName;        try {            HttpHeaders headers = new HttpHeaders();            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);            headers.setContentDispositionFormData("attachment", fileName);            File file = new File(path);            return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);        } catch (Exception e) {            e.printStackTrace();            return null;        }    }}

  以上代码中,我们使用了 imageService.getImageById(id) 方法来获取要下载的图片的信息,这个方法可以自己实现或借助MyBatis框架读取数据库获取数据。

  最后,在SpringMVC的配置文件spring-servlet.xml中,添加以下配置信息,以支持文件上传和下载功能:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <property name="maxUploadSize" value="10485760" />bean><mvc:resources mapping="/download/**" location="file:/D:/uploads/" />

  这样,我们就完成了图片上传和下载的功能实现。通过SSM框架的整合,我们可以很方便地实现文件上传和下载的功能。

思路二:浏览器图片的上传下载显示通过数据库实现

  SSM 将图片添加到数据库和从数据库读取到前端页面实质上是对数据库中的二进制数据进行操作,以下是常用的实现方式:

1、将图片添加到数据库

  (1)在数据库中添加一个表,用于存储图片数据,表结构如下:

CREATE TABLE tb_image(    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',    `name` varchar(255) NOT NULL COMMENT '文件名',    `image` longblob NOT NULL COMMENT '图片数据',    PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图片表';

  其中,id为主键自增长,name用于存储文件名,image用于存储图片数据。

  (2)在 Java 代码中先读取图片数据,然后将其插入到数据库中,示例代码如下:

public void addImage(String name, String imagePath) {    try {        FileInputStream fis = new FileInputStream(imagePath);        PreparedStatement pstmt = conn.prepareStatement("INSERT INTO tb_image(name,image) VALUES(?,?)");        pstmt.setString(1, name);  // 设置文件名        pstmt.setBinaryStream(2, fis, fis.available());  // 设置图片数据        pstmt.executeUpdate();        pstmt.close();    } catch (Exception e) {        e.printStackTrace();    }}

  其中,name为文件名,imagePath为图片路径,fis为读取图片数据的输入流,conn为数据库连接对象。

第二步:从数据库读取到前端页面

  (1)在 Java 代码中从数据库中读取图片数据,示例代码如下:

public void getImage(int id, HttpServletResponse response) {    try {        PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM tb_image WHERE id=?");        pstmt.setInt(1, id);        ResultSet rs = pstmt.executeQuery();        if (rs.next()) {            String name = rs.getString("name");            Blob imageBlob = rs.getBlob("image");            InputStream is = imageBlob.getBinaryStream();            ServletOutputStream out = response.getOutputStream();            response.setContentType("image/jpeg");            response.setHeader("Content-Disposition", "attachment;filename=" + name);            byte[] b = new byte[1024];            int len;            while ((len = is.read(b)) > 0) {                out.write(b, 0, len);            }            is.close();            out.flush();            out.close();        }        rs.close();        pstmt.close();    } catch (Exception e) {        e.printStackTrace();    }}

  其中,id 为图片在数据库中的对应主键,response 为响应对象,conn 为数据库连接对象。通过操作 ResultSet 对象可以得到图片数据的输入流。

  (2)在前端页面中调用此 Java 方法,将图片数据显示在页面上,示例代码如下:

<img class="lazy" data-src="/getImage?id=1" />

  其中,getImage 方法的 id 参数表示图片在数据库中的主键值。在前端页面中使用 img 标签,指定 class="lazy" data-src 属性为 getImage 方法的 url 地址即可


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

来源地址:https://blog.csdn.net/hh867308122/article/details/129628176

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Spring MVC 图片的上传和下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring MVC 图片的上传和下载

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:
2023-08-20

Spring MVC图片的上传和下载功能怎么实现

这篇文章主要介绍了Spring MVC图片的上传和下载功能怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring MVC图片的上传和下载功能怎么实现文章都会有所收获,下面我们一起来看看吧。序言SSM
2023-07-05

SpringMVC图片的上传和下载功能

SSM框架是一种基于Java的Web开发框架,其中Spring作为控制层、SpringMVC作为视图层、MyBatis作为持久层,这个框架非常适合Web应用程序的开发,这篇文章主要介绍了SpringMVC图片的上传和下载功能,需要的朋友可以参考下
2023-03-20

使用Spring MVC怎么实现文件上传和下载

这期内容当中小编将会给大家带来有关使用Spring MVC怎么实现文件上传和下载,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文件上传1、导入主要依赖
2023-06-14

spring mvc+localResizeIMG实现HTML5端图片压缩上传

最近在做一个移动端HTML5的应用,使用到了上传功能,起初使用传统的上传方式上传手机拍照的照片,由于手机拍照出来的照片一般都是好几MB,所以上传速度是非常慢的。在网上找了很久找到了localResizeIMG压缩框架,感觉非常的实用,所以在
2023-05-31

Spring MVC的文件上传和下载以及拦截器的使用实例

Spring MVC会根据请求方法的签名不同,将请求消息中的信息以一定的方式转换并绑定到请求方法的参数中。1.文件上传文件上传,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有这样
2023-05-31

Android编程实现图片的上传和下载功能示例

本文实例讲述了Android编程实现图片的上传和下载功能。分享给大家供大家参考,具体如下: 在实现一个Android的WEB服务客户端,比如微博,论坛客户端时,经常会使用到图片的上传和下载。在这里介绍如何利用HttpClient实现图片的上
2022-06-06

uniapp上传图片和上传视频的实现方法

这篇文章主要给大家介绍了关于uniapp上传图片和上传视频的实现方法,文中还介绍了上传文件的方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-01-17

前端大文件上传与下载(分片上传)的详细过程

最近遇见一个需要上传超大大文件的需求,所以下面这篇文章主要给大家介绍了关于前端大文件上传与下载(分片上传)的详细过程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录