案例14 Spring MVC文件上传案例

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

基于Spring MVC实现文件上传:

  1. 使用commons-fileupload实现上传文件到本地目录。

  2. 实现上传文件到阿里云OSS和从阿里云OSS下载文件到本地。

1. 创建项目

选择Maven快速构建web项目,项目名称为case14-springmvc03。

案例14 Spring MVC文件上传案例,SpringBoot入门实战,java,spring,mvc

2. 配置Maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.wfit.springmvc</groupId>
  <artifactId>springmvc02</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <!--spring mvc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.8</version>
    </dependency>
    <!--servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!--fileupload-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.4</version>
    </dependency>
    <!--aliyun-sdk-oss-->
    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.15.1</version>
    </dependency>
  </dependencies>
</project>

3. 创建Spring MVC配置文件

src.main.resources目录下创建spring-mvc.xml。

<?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: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 https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--开启注解-->
    <context:component-scan base-package="com.wfit"/>
    <!--启用mvc-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--设置上传大小 最大1M-->
        <property name="maxUploadSize" value="1048576"/>
    </bean>
</beans>

4. 配置web.xml

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <!--解决POST中文乱码问题 过滤器-->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!--配置前端控制器DispatcherServlet-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--加载SpringMVC文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <!--启动容器时加载servlet-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <!--表示拦截所有请求-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

5. 创建UploadController类

在src.main.java.com.wfit.upload目录下创建UploadController类,实现文件上传。

@Controller
@RequestMapping("/upload")
public class UploadController {
    /**
     * 文件上传
     * @param file
     * @return
     */
    @PostMapping("/upload")
    @ResponseBody
    public String upload(MultipartFile file) throws IOException {
        //验证文件是否为空
        if(ObjectUtils.isEmpty(file) || file.getSize() <=0){
            return "file is empty";
        }
        //创建上传文件位置
        File uploadDir = new File("D:\\upload");
        //获取文件名
        String fileName = file.getOriginalFilename();
        //创建目标文件
        File desFile = new File(uploadDir,fileName);
        //执行上传操作
        file.transferTo(desFile);
        return "success";
    }
}

6. 创建OssController类

在src.main.java.com.wfit.upload目录下创建OssController类,实现上传文件到阿里云OSS和从阿里云OSS下载文件到本地。

@Controller
@RequestMapping("/oss")
public class OssController {

    //访问OSS的域名
    private static String endpoint = "oss-cn-beijing.aliyuncs.com";
    //accessKeyId和accessKeySecret是OSS的访问密钥
    private static String accessKeyId = "<yourAccessKeyId>";
    private static String accessKeySecret = "<yourAccessKeySecret>";
    //Bucket用来管理所存储Object的存储空间
    private static String bucketName = "<yourBucketName>";
    //目标文件
    private static String objectName = "upload/123.txt";
    /**
     * 上传文件到阿里云OSS
     * @return
     */
    @PostMapping("/upload")
    @ResponseBody
    public String upload(MultipartFile file) throws IOException {
        //验证文件是否为空
        if(ObjectUtils.isEmpty(file) || file.getSize() <=0){
            return "file is empty";
        }
        InputStream inputStream = file.getInputStream();
        // 创建OSSClient实例
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        try {
            // 创建PutObjectRequest对象
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
            // 设置该属性可以返回response。如果不设置,则返回的response为空
            putObjectRequest.setProcess("true");
            // 创建PutObject请求
            PutObjectResult result = ossClient.putObject(putObjectRequest);
            // 如果上传成功,则返回200
            System.out.println(result.getResponse().getStatusCode());
        } catch (Exception e) {
            System.out.println("Error Message:" + e.getMessage());
        } 
        return "success";
    }

    /**
     * 下载阿里云文件到本地
     * @return
     */
    @PostMapping("/download")
    @ResponseBody
    public String download(String objName,String path) throws IOException {
        //下载目录
        String pathName = "download/123.txt";
        // 创建OSSClient实例
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        try {
            // 下载Object到本地文件,并保存到指定的本地路径中
            ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(pathName));
        } catch (Exception e) {
            System.out.println("Error Message:" + e.getMessage());
        }
        return "success";
    }
}

7. Postman执行上传文件到本地目录

案例14 Spring MVC文件上传案例,SpringBoot入门实战,java,spring,mvc

8. Postman执行上传到阿里云OSS

案例14 Spring MVC文件上传案例,SpringBoot入门实战,java,spring,mvc

9. Postman执行从阿里云OSS下载文件到本地

案例14 Spring MVC文件上传案例,SpringBoot入门实战,java,spring,mvc文章来源地址https://www.toymoban.com/news/detail-642153.html

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

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

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

相关文章

  • Spring MVC简介附入门案例

    目录   一、SpringMVC简介 1.1 MVC模型 1.2 SpringMVC 二、SpringMVC入门案例 2.1 创建项目 2.2 引入依赖和tomcat插件 2.3 修改web.xml文件  2.4 新建springmvc.xml文件 2.5 编写控制器  2.6 配置运行方式 2.7 运行测试  三、SpringMVC执行流程 3.1 SpringMVC的组件 3.2 组件的工作流程 往期专栏文章

    2024年02月09日
    浏览(42)
  • Spring MVC学习之——上传文件

    编写controller 注意在controller方法的参数中 MultipartFile upload的参数名一定要和jsp中上传input的name保持一致,否则会报空指针异常。 在index.jsp里面定义超链接 注意表单在加入上传的input后,一定要写enctype=“multipart/form-data”,否则controller会接收不到,报错空指针

    2024年01月20日
    浏览(36)
  • 3.6 Spring MVC文件上传

    1. 文件上传到本地 实现方式 Spring MVC使用commons-fileupload实现文件上传,注意事项如下: l HTTP请求方法是POST。 l HTTP请求头的Content-Type是multipart/form-data。 SpringMVC配置 配置commons-fileupload插件的文件上传解析器CommonsMultipartResolver,id是multipartResolver。 2. 文件上传到阿里云OSS 阿里云

    2024年02月13日
    浏览(25)
  • Spring MVC:文件的上传与下载

    文件的上传与下载是项目开发中最常用的功能之一。在 JavaWeb 中,文件上传与下载的实现是比较繁琐的。而 Spring MVC 实现文件上传与下载是相对比较简单的。 简单示例: 首先,在 pom.xml 中配置以下依赖

    2024年02月08日
    浏览(28)
  • Spring Mvc 文件上传(MultipartFile )—官方原版

    要启动Spring Boot MVC应用程序,首先需要一个启动器。在这个示例中,已经添加了spring-boot-starter thymelaf和spring-boot-starter web作为依赖项。要使用Servlet容器上传文件,您需要注册一个MultipartConfigElement类(在web.xml中为<multipart-config>)。多亏了Spring Boot,一切都可以自动配置!

    2024年02月14日
    浏览(32)
  • Spring MVC多种情况下的文件上传

    上传是Web工程中很常见的功能,SpringMVC框架简化了文件上传的代码,我们首先使用JAVAEE原生方式上传文件来进行详细描述: 这里我们创建新的SpringMVC模块,在web.xml中将项目从2.3改为3.1,即可默认开启el表达式,如下图: 那这里我们需要访问一个页面来进行文件下载 upload.js

    2024年02月13日
    浏览(64)
  • Spring MVC异步上传、跨服务器上传和文件下载

    之前的上传方案,在上传成功后都会跳转页面。而在实际开发中,很多情况下上传后不进行跳转,而是进行页面的局部刷新,比如:上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。 编写JSP页面,引入jQuery和jQuery表单上传工具jquery.form.js【该js文件已经

    2024年02月16日
    浏览(35)
  • Spring MVC文件上传及全局异常处理器

    编写controller 在index.jsp里面定义超链接 如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。 系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图: 编写c

    2024年01月18日
    浏览(41)
  • ASP.NET Core MVC 从入门到精通之文件上传

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步

    2024年02月03日
    浏览(38)
  • Spring Mvc上传文件报错MissingServletRequestPartException:Required request part ‘file‘ is not present两种解决方案

    今天写了个SpringMvc上传文件的接口 运行后报错  附上接口代码  附上 请求截图   出现这种情况通常有两种情况: @RequestPart(\\\"file\\\") 里面的file和前端请求的name=\\\"file\\\"的值 不同 (见上图) 没有配置Spring MVC的文件上传解析器 很明显 这里第一种情况不满足  解决第二种情况的方法有

    2024年01月16日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包