【SpringMVC】文件上传与下载、JREBEL使用

这篇具有很好参考价值的文章主要介绍了【SpringMVC】文件上传与下载、JREBEL使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、引言

二、文件的上传

1、单文件上传

1.1、数据表准备

1.2、添加依赖

1.3、配置文件

1.4、编写表单

1.5、编写controller层

2、多文件上传

2.1、编写form表单

2.2、编写controller层

2.3、测试

三、文件下载

四、JREBEL使用

1、下载注册

2、离线设置


一、引言

为什么要使用文件的上传下载?作用?

SpringMVC文件上传下载是一个常见的功能,它可以让用户上传文件到服务器或者从服务器下载文件。这对于许多Web应用程序来说是必不可少的功能,比如在线存储、文档管理系统等。SpringMVC提供了一些方便的注释和API,可以使文件上传和下载变得非常简单。在文件上传方面,SpringMVC提供了@RequestParam注释和MultipartFile类,可以轻松地处理上传的文件。在文件下载方面,SpringMVC提供了ResponseEntity类,可以将文件作为响应发送给客户端。

二、文件的上传

1、单文件上传

1.1、数据表准备

根据自己的表来也是可以的,只是用来保存数据

1.2、添加依赖

在你的spring mvc里面的pom.xml里面添加文件上传的依赖

<dependencies>        
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>${commons-fileupload.version}</version>
        </dependency>
</dependencies>

1.3、配置文件

在自己的spring-mvc.xml文件里面添加配置

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 必须和用户JSP 的pageEncoding属性一致,以便正确解析表单的内容 -->
    <property name="defaultEncoding" value="UTF-8"></property>
    <!-- 文件最大大小(字节) 1024*1024*50=50M-->
    <property name="maxUploadSize" value="52428800"></property>
    <!--resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常-->
    <property name="resolveLazily" value="true"/>
</bean>

下面我提供我的文件配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-4.3.xsd
      http://www.springframework.org/schema/aop
      http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--1) 扫描com.tgq及子子孙孙包下的控制器(扫描范围过大,耗时)-->
    <context:component-scan base-package="com.tgq"/>

    <!--2) 此标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
    <mvc:annotation-driven/>

    <!--3) 创建ViewResolver视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- viewClass需要在pom中引入两个包:standard.jar and jstl.jar -->
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!--4) 单独处理图片、样式、js等资源 -->
    <!--        <mvc:resources location="/static/" mapping="/static/**"/>-->
    <!--    处理文件上传下载问题-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 必须和用户JSP 的pageEncoding属性一致,以便正确解析表单的内容 -->
        <property name="defaultEncoding" value="UTF-8"></property>
        <!-- 文件最大大小(字节) 1024*1024*50=50M-->
        <property name="maxUploadSize" value="52428800"></property>
        <!--resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常-->
        <property name="resolveLazily" value="true"/>
    </bean>
    <!--  处理controller层发送请求到biz,会经过切面的拦截处理  -->
    <aop:aspectj-autoproxy/>
</beans>

1.4、编写表单

表单提交方式为method="post"enctype="multipart/form-data"

<%--
  Created by IntelliJ IDEA.
  User: tgq
  Date: 9/9/2023
  Time: 下午2:41
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>图片上传</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/sc/upload" method="post" enctype="multipart/form-data">
    <label>编号:</label><input type="text" name="cid" readonly="readonly" value="${param.cid}"/><br/>
    <label>图片:</label><input type="file" name="zx"/><br/>
    <input type="submit" value="上传图片"/>
</form>
</body>
</html>

上传图片的name名字不能和数据库表名的列名一样,但是必须要和后端的代码的名字一样

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

1.5、编写controller层

@Controller
@RequestMapping("/sc")
public class StrutsClasController {

    @Autowired
    private StrutsClasBiz strutsClasBiz;

 /**
     * 文件上传
     * <p>
     * //     * @param req
     * //     * @param strutsClas
     *
     * @param zx
     * @return
     */
    @RequestMapping(value = "/upload")
    public String upload(StrutsClas strutsClas, MultipartFile zx) {
//    public String upload(HttpServletRequest req, StrutsClas strutsClas, MultipartFile pic) {
        try {
            //思路:
            //1) 将上传图片保存到服务器中的指定位置
//            本地保存地址
//            String dir = PropertiesUtil.getValue("dir");
              String dir="d:/";
//            网络保存地址/upload/
//            String server = PropertiesUtil.getValue("server");
              String server="/upload/";
//            文件名
            String filename = zx.getOriginalFilename();
//            System.out.println("文件名:" + filename);
//            文件类别
//            System.out.println("文件类别" + zx.getContentType());
            System.out.println(strutsClas);
            FileUtils.copyInputStreamToFile(zx.getInputStream(), new File(dir + filename));
            //2) 更新数据库表t_struts_class图片记录
            strutsClas.setPic(server + filename);
            strutsClasBiz.updateByPrimaryKeySelective(strutsClas);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "redirect:list";
    }
}

配置tomcat的时候记得添加upload地址映射

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

2、多文件上传

2.1、编写form表单

<form method="post" action="/sc/uploads" enctype="multipart/form-data">
    <input type="file" name="files" multiple>
    <button type="submit">上传</button>
</form>

2.2、编写controller层

 /**
     * 多文件上传
     *
     * @param req
     * @param clas
     * @param files
     * @return
     */
    @RequestMapping("/uploads")
    public String uploads(HttpServletRequest req,MultipartFile[] files) {
        try {
            StringBuffer sb = new StringBuffer();
            for (MultipartFile cfile : files) {
                //思路:
                //1) 将上传图片保存到服务器中的指定位置
                String dir = "D:/temp/upload/";
                String server = "/upload/";
                String filename = cfile.getOriginalFilename();
                FileUtils.copyInputStreamToFile(cfile.getInputStream(), new File(dir + filename));
                sb.append(filename).append(",");
            }
            System.out.println(sb.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
        return "redirect:list";
    }

2.3、测试

但我们选择多个文件上传
【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis
我们的本地文件为空

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis
当我们上传之后本地就会进行上传

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

运用到我们的数据库也是一样的

三、文件下载

根据自己的表来进行操作

<a href="${pageContext.request.contextPath }/sc/download?cid=${b.cid}">下载图片</a>

编写编写controller层方法

/**
     * 文件下载
     *
     * @param strutsClas
     * @param req
     * @return
     */
    @RequestMapping(value = "/download")
    public ResponseEntity<byte[]> download(StrutsClas strutsClas, HttpServletRequest req) {

        try {
            //先根据文件id查询对应图片信息
            StrutsClas strutsClas1 = this.strutsClasBiz.selectByPrimaryKey(strutsClas.getCid());
//需要下载的地址
            String diskPath = PropertiesUtil.getValue("dir");
//服务器里面保存图片的地址
            String reqPath = PropertiesUtil.getValue("server");
            String realPath = strutsClas1.getPic().replace(reqPath, diskPath);
            String fileName = realPath.substring(realPath.lastIndexOf("/") + 1);
            //下载关键代码
            File file = new File(realPath);
            HttpHeaders headers = new HttpHeaders();//http头信息
            String downloadFileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");//设置编码
            headers.setContentDispositionFormData("attachment", downloadFileName);
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            //MediaType:互联网媒介类型  contentType:具体请求中的媒体类型信息
            return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

当我们点击下载的时候就会进行下载

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

四、JREBEL使用

1、下载注册

搜索插件JRebel 并且下载,安装成功之后会让你重启,重启之后按操作来

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

在弹出框里面进行注册

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

在第一个里面填写 http://127.0.0.1:8888/GUID   

GUID:更改为GUID online erstellen  里面生成的ID填写

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

最后确认注册

启动你的代理。然后运行JRebel

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis

2、离线设置

进入我们的设置,前提是我们要开始我们的代理才能进行这个操作

【SpringMVC】文件上传与下载、JREBEL使用,spring系列,java,spring,开发语言,mybatis文章来源地址https://www.toymoban.com/news/detail-727056.html

到了这里,关于【SpringMVC】文件上传与下载、JREBEL使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring6中删除了CommonsMultipartResolver类后,使用springmvc如何上传文件

     在新的Spring6中,官方删除了之前上传文件使用的CommonsMultipartResolver类,导致之前的上传文件方法行不通了。 我们可以在Spring6官网中看到官方的声明: 大致意思就是: CommonsMultipartResolver从 Spring Framework 6.0 及其新的 Servlet 5.0+ 基线开始,基于 Apache Commons FileUpload 的过时版本不

    2024年01月16日
    浏览(26)
  • SpringMVC 文件上传和下载

    Spring MVC 提供了简单而强大的文件上传和下载功能。 下面是对两者的简要介绍: 文件上传: 在Spring MVC中进行文件上传的步骤如下: 在表单中设置 enctype=“multipart/form-data”,这样浏览器会将表单数据以二进制流的形式进行传输。 在控制器方法中,使用 @RequestParam 注解来接收

    2024年01月17日
    浏览(33)
  • SpringMVC实现文件上传&下载(2)

    文件上传步骤 第一步:由于SpringMVC使用的是commons-fileupload实现,故将其组件引入项目中,这里用到的是commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar。 第二步:spring-mvx中配置MultipartResolver处理器。可在此加入对上传文件的属性限制。 第三步:在Controller的方法中添加MultipartFile参数。

    2024年03月09日
    浏览(47)
  • SpringMVC之文件上传和下载

    实现下载文件和上传文件的功能。 使用ResponseEntity实现下载文件的功能 文件上传要求form表单的请求方式必须为post,并且添加属性enctype=“multipart/form-data” SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息。 步骤: 添加依赖 在SpringMVC的配置

    2024年02月10日
    浏览(51)
  • SpringMVC 实现文件的上传和下载

    SpringMVC 是一个基于 Java 的 Web 框架,它提供了方便的文件上传和下载功能。下面是它的实现原理简要描述: 文件上传: 客户端通过表单(HTML 的 标签)将文件选择并提交到服务器。 服务器接收到请求后,SpringMVC 会将字节流形式的文件内容封装成 MultipartFile 对象。 SpringMVC 使

    2024年02月05日
    浏览(39)
  • SpringMVC Day 08 : 文件上传下载

    文件上传和下载是 Web 开发中的重要环节,但它们往往不那么容易实现。幸运的是,Spring MVC 提供了一套简单而又强大的解决方案,让我们可以专注于业务逻辑,而不必过多关注底层的文件处理细节。 在本篇博客中,我们将学习如何利用 Spring MVC 实现文件上传和下载功能。首

    2024年02月06日
    浏览(31)
  • 11、SpringMVC之文件下载和上传

    创建名为spring_mvc_file的新module,过程参考9.1节和9.5节 注意:springmvc 根据bean的id来获取文件解析器,因此必须设置 id 属性,且属性值必须为 multipartResolver 如果上传了同名的文件,那新的文件就会覆盖旧的文件; 因此需要通过一个机制,保证上传后的文件名的不会和新上传的

    2024年02月05日
    浏览(30)
  • Java 使用OSS 文件上传+下载 简单入门

    官方SDK文档:Java对象/文件_对象存储-阿里云帮助中心           阿里云对象存储OSS(Object Storage Service)为您提供基于网络的数据存取服务。使用OSS,可以通过网络随时存储和调用包括文本、图片、音视频在内的各类数据文件;可以通过OSS控制台创建Bucket,并将文件上传

    2024年02月10日
    浏览(35)
  • Java spring-boot项目中如何上传下载文件或图片到spring-boot规定的非静态目录

    spring-boot的项目,虽然它自己定义了一个静态文件的存储目录,但是这个目录一般是作为前端静态文件的目录来作为使用的。如果使用这个静态目录来作为我们上传文件的目录会有一个比较尴尬的地方:将spring-boot打包成为jar包后,随着上传图片的增多,这个jar包也会跟着变大

    2024年02月16日
    浏览(39)
  • 文件上传下载系列——如何实现文件秒传

    🎃简介: 👻核心思想: MD5是什么? 实现步骤: 🎄实操: 1、java生成文件MD5码 2、javascript生成文件MD5码 ⛳️基于秒传的分片上传下载 上传: 下载: 🍢MD5存储位置 1、持久化到数据库中 2、存储到redis中 🎋总结         文件秒传是指在文件上传过程中,如果上传的文件

    2024年02月01日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包