美文网首页程序员
Spring MVC中实现文件上传(一定要用post请求,get

Spring MVC中实现文件上传(一定要用post请求,get

作者: 凡哥爱丽姐 | 来源:发表于2020-12-29 15:52 被阅读0次
    Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver接口实现。MultipartResolver用于处理上传请求,将上传请求包装成可以直接获取文件的数据,从而方便操作,它有两个实现类:StandardServletMultipartResolver和CommonsMultipartResolver,下面介绍CommonsMultipartResolver来完成文件上传的具体步骤:

系统的整体架构图:

整体架构

1、添加相应的jar包

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

2、在spring.xml中配置MultipartResolver

  <mvc:annotation-driven/>
    <!--加载静态文件-->
    <mvc:default-servlet-handler></mvc:default-servlet-handler>
    <!--上传文件配置 对象名必须是multipartResolver-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"></property>
        <property name="maxUploadSize" value="5000000"></property>
    </bean>
    ♦defaultEncoding:请求的编码格式,默认为ISO-8859-1,此处设置为UTF-8(注:defaultEncoding必须和JSP的pageEncoding设置一致,以便正确的读取表单的内容)
    ♦maxUploadSize:上传文件大小上限,单位为字符。

3、index.jsp和success.jsp

enctype="multipart/form-data"必须添加
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>上传文件</h2>
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="photo"/>
    <input type="submit" name="上传">
</form>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: Mr Wei
  Date: 2020/*/*
  Time: 15:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
<head>
    <title>上传成功页面</title>
</head>
<body>
<img src="/uploadFile/${fname}" width="200px" height="150px">
</body>
</html>

4、controller类

该网址https://blog.csdn.net/cliche_tune/article/details/102901241解释为什么传入的是文件而不是文件夹new File(path+"/"+photo.getOriginalFilename())

package com.fan.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@Controller
public class Controller1 {

    @RequestMapping("/upload")
    public String saveFile(MultipartFile photo, HttpServletRequest request, ModelMap map) {
        //将文件上传到uploadFile目录下
        //转化服务器地址
        String path=request.getRealPath("/uploadFile");
        //photo.getOriginalFilename()得到文件名称
        if(!photo.isEmpty()){
            try {
                photo.transferTo(new File(path+"/"+photo.getOriginalFilename()));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        map.addAttribute("fname",photo.getOriginalFilename());
        return "success";
    }
}

5、启动tomcat进行上传图片(这中间需要注意的是如果第一开始uploadFile文件是空文件,则随便传入一个文件,再启动tomcat,这样才能编译到该文件夹)

相关文章

网友评论

    本文标题:Spring MVC中实现文件上传(一定要用post请求,get

    本文链接:https://www.haomeiwen.com/subject/dumazhtx.html