我的成长磨练,每天写博客,年轻人,卷起袖子,来把手弄脏吧! ------ 博客首页

springmvc实现文件上传

一.前端需要准备的工作:

1.表单的提交方式必须为post提交 method="post"。

2.加入enctype="multpart/form-data".

3.添加标签<input type="file">

 

<%@ page language="java" isELIgnored="false" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
    <h2>springmvc文件上传</h2>
    <form action="${pageContext.request.contextPath}/file/upload" method="post" enctype="multipart/form-data">
        用户名称:<input type="text" name="uname" placeholder="username">
        <input type="file" name="myfile">
        <input type="submit" value="开始上传">
    </form>

</body>
</html>

 

 

 

二.后端需要准备的工作:

1.引入的依赖(非maven工程需要引入对应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.5</version>
</dependency>
2.配置文件上传的解析器(在springmvc的配置文件中引入)


    <!--配置文件上传的解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760"/><!--文件上传最大大小-->
        <property name="defaultEncoding" value="utf-8"/><!--设置编码格式-->
    </bean

 3.实现文件上传的java代码

package com.woniu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;

/**
 * springmvc在文件上传时默认
 * 使用fileupload。jar commons.io.jar
 *
 */
@RequestMapping("/file")
@Controller
public class FileUploadController {

    @RequestMapping("/upload")
    public String fileUpload(@RequestParam("myfile") MultipartFile file, HttpServletRequest req){
        //1.获取原文件名
        String originalFilename = file.getOriginalFilename();
        //2.让文件名不重复
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));//获取上传文件的后缀
        String uuid = UUID.randomUUID().toString().replace("-", "");//获取不重复的uuid,用于拼接新的文件名

        //3.获取服务器的路径(绝对路径)
        ServletContext sc = req.getServletContext();//得到服务器的上下文
        String realPath = sc.getRealPath("upload");//文件夹的绝对路径
        String filename = realPath + File.separator + uuid + suffix;//拼接新的文件名
        System.out.println(filename);
        //2.开始上传文件
        File f = new File(filename);
        try {
            file.transferTo(f);
        }catch (Exception e){
            e.printStackTrace();
        }
        return "success";//返回到成功页面
    }
}

springmvc上传文件的思路:

1.前端上传的文件通过字节流传输到controller

2.通过MutipartFile file 得到从前端得到的文件

3.通过file.getOriginalFilename()得到文件的原文件名

4.然后通过file.transferTo("保存路径"),将文件上传。

 

 

posted @ 2020-07-20 15:25  Loginout  阅读(178)  评论(0编辑  收藏  举报

web应用开发&研究 - 创建于 2014年8月17日

这是一位web前端开发工程师的个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

致力于web应用开发&研究工作,专注web前端开发,关注互联网前沿技术与趋势。


Font Awesome | Respond.js | Bootstrap中文网