Spring Boot从入门到放弃-文件上传

图片上传:

我们在开发WEB项目时必然要上传文件,所以我们以上传图片为例,做一次图片上传。上传图片有两种方式:1. 放到tomcat的临时目录下,重启一次就没有了。还有一个就是上传到绝对目录也就是本地计算机的存储目录,后期无论怎么重启都不会丢失。

上传到tomcat->temp:

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
# #上传文件大小
#单个
spring.http.multipart.max-file-size=500Mb
#全部
spring.http.multipart.max-request-size=500Mb
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="/upload">

    文件
    <input type="file" name="file">
    <input type="submit" value="上传">
 
</form>
</body>
</html>
package cn.org.easycoding.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;

/**
 * Created by Guanzhong Hu
 * Date :2020/2/8
 * Description : 设置控制器
 * Version :1.0
 */
@Controller
public class SettingController {

    @ResponseBody
    @RequestMapping(value = "/upload" ,method = RequestMethod.POST)
    public String uploadfile(MultipartFile file, HttpServletRequest request){


        try {
            // 创建文件在服务器端存放路径
         
            String dir = request.getServletContext().getRealPath("/upload");
            // 如果没有文件则创建
            File fileDir = new File(dir);
            if (!fileDir.exists()) fileDir.mkdirs();

            System.out.println(dir);
            //原始名
            String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
            String fileName = UUID.randomUUID().toString()+fileSuffix;
            File files = new File(fileDir+"/"+fileName);
            file.transferTo(files);
        }catch (Exception e){
            return "上传失败";
        }
        return "上传成功!";
    }

}

上传本地目录:

package cn.org.easycoding.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;

/**
 * Created by Guanzhong Hu
 * Date :2020/2/8
 * Description : 设置控制器
 * Version :1.0
 */
@Controller
public class SettingController {

    @ResponseBody
    @RequestMapping(value = "/upload" ,method = RequestMethod.POST)
    public String uploadfile(MultipartFile file, HttpServletRequest request){


        try {
            // 创建文件在服务器端存放路径
           
            String dir = "d://imgs/";
            // 如果没有文件则创建
            File fileDir = new File(dir);
            if (!fileDir.exists()) fileDir.mkdirs();

            System.out.println(dir);
            //原始名
            String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
            String fileName = UUID.randomUUID().toString()+fileSuffix;
            File files = new File(fileDir+"/"+fileName);
            file.transferTo(files);
        }catch (Exception e){
            return "上传失败";
        }
        return "上传成功!";
    }

}

我们使用UUID对图片名进行重命名,避免文件夹重复名导致xxx.png后加(1)最终导致图片找不到。 因为Springboot已经帮我们集成好了基础的依赖包,里面包含了图片上传,所以我们只需要依赖一条就OK!

发布了56 篇原创文章 · 获赞 121 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_37857921/article/details/104232376