美文网首页
4 SpringBoot文件上传

4 SpringBoot文件上传

作者: 洋baby | 来源:发表于2019-04-17 22:25 被阅读0次

    基于Spring Boot的文件上传
    上传方式:
    1.直接上传到应用服务器
    2.上传到OSS(内容存储服务器,如:阿里云,七牛云)
    3.前端将图片转成Base64编码上传(小容量图片)

    • 第一种:先键一个新的模块upload
    image image image image image
    • 然后finish,建立包和三个类

      image
    • UploadController类

    package com.springboot.upload.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.util.ResourceUtils;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.servlet.mvc.support.RedirectAttributes;
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.UUID;
    //上传文件控制器
    //直接上传到服务器
    @Controller
    public class UploadController {
    //指定一个临时路径作为上传目录
    //private static String UPLOAD_FOLDER = "C:\Users\Liuyu\Desktop\UPLOAD";
    //遇到http://localhost:8080,则跳转至upload.html页面
    @GetMapping("/")
    public String index() {
    return "upload";
    }
    @PostMapping("upload")
    public String fileUpload(@RequestParam("file")MultipartFile srcFile, RedirectAttributes redirectAttributes) {
    //前端没有选择文件,srcFile为空
    if(srcFile.isEmpty()) {
    redirectAttributes.addFlashAttribute("message", "请选择一个文件");
    return "redirect:upload_status";
    }
    //选择了文件,开始上传操作
    try {
    //构建上传目标路径,找到了项目的target的classes目录
    File destFile = new File(ResourceUtils.getURL("classpath:").getPath());
    if(!destFile.exists()) {
    destFile = new File("");
    }
    //输出目标文件的绝对路径
    System.out.println("file path:"+destFile.getAbsolutePath());
    //拼接子路径
    SimpleDateFormat sf_ = new SimpleDateFormat("yyyyMMddHHmmss");
    String times = sf_.format(new Date());
    File upload = new File(destFile.getAbsolutePath(), "picture/"+times);
    //若目标文件夹不存在,则创建
    if(!upload.exists()) {
    upload.mkdirs();
    }
    System.out.println("完整的上传路径:"+upload.getAbsolutePath()+"/"+srcFile);
    //根据srcFile大小,准备一个字节数组
    byte[] bytes = srcFile.getBytes();
    //拼接上传路径
    //Path path = Paths.get(UPLOAD_FOLDER + srcFile.getOriginalFilename());
    //通过项目路径,拼接上传路径
    Path path = Paths.get(upload.getAbsolutePath()+"/"+srcFile.getOriginalFilename());
    //** 开始将源文件写入目标地址
    Files.write(path, bytes);
    String uuid = UUID.randomUUID().toString().replaceAll("-", "");
    // 获得文件原始名称
    String fileName = srcFile.getOriginalFilename();
    // 获得文件后缀名称
    String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
    // 生成最新的uuid文件名称
    String newFileName = uuid + "."+ suffixName;
    redirectAttributes.addFlashAttribute("message", "文件上传成功"+newFileName);
    } catch (IOException e) {
    e.printStackTrace();
    }
    return "redirect:upload_status";
    }
    //匹配upload_status页面
    @GetMapping("upload_status")
    public String uploadStatusPage() {
    return "upload_status";
    }
    }

    • upload.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>SpringBoot文件上传页面</title>
    </head>
    <body>
    <form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
    </form>
    </body>
    </html>

    • upload_status.html

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
    <meta charset="UTF-8">
    <title>文件上传状态显示</title>
    </head>
    <body>
    <h2>SpringBoot的文件上传状态</h2>
    <div th:if="[图片上传失败...(image-afb475-1555511022658)]

    {message}"/>
    </div>
    </body>
    </html>

    • 运行结果

      image image

      打包文件上传项目为jar类型的步骤:
      1.双击以下install

      image
    • 成功的图片

      image
    • 生成一个jar包

      image
    • 停到服务器

    • 把这个jar包复制粘贴到文件夹中

      image
    • 把cmd命令行打开(打开到jar包的位置)

    java -java upload.jar

    image

    在Google里面打开http://localhost:8080/upload_status

    image

    能上传说明已经成功了
    上传图片的路径:F:\SpringBootStudy\spring-boot-damo\upload\target\classes

    1.文件名在服务器端可以重命名(扩展名不变)

    2.上传目录自动创建为当前系统日期

    image

    相关文章

      网友评论

          本文标题:4 SpringBoot文件上传

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