java基础学习

SpringBoot 实现单文件上传

2018-05-30  本文已影响56人  迷糊银儿

本次我实现的是一个简单的但文件上传项目,主要用到了MultipartFile这一自带的文件工具类以及@RequestParam注解

1.先写一个view,供上传文件的入口: uploadFile.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>index page</title>
</head>
<body>

    <form th:action="@{/fileUpload}" method="post" enctype="multipart/form-data">
        <p>选择文件:<input type="file" name="fileName"> </p>
        <p><input type="submit" value="提交"></p>
    </form>
</body>
</html>

2.上传文件相关的controller文件:FileUploadController

@Controller
public class FileUploadController {

    @RequestMapping(value = "/file")
    public String file(){
        return "uploadFile";
    }

    // MultipartFile是自带的上传文件的工具类
    // @RequestParam("fileName") 中的参数名称同controller的参数名称保持一致
    @RequestMapping(value = "fileUpload")
    @ResponseBody
    public String fileUpload(@RequestParam("fileName") MultipartFile multipartFile){

        if(multipartFile.isEmpty())
            return "请先选择要上传的文件";

        String fileName=multipartFile.getOriginalFilename();
        System.out.println("++++++++上传的文件名称为:"+fileName);

        int fileSize=(int)multipartFile.getSize();
        System.out.println("++++++++上传文件的大小为:"+fileSize);

        //设定文件的保存位置
        String basePath=System.getProperty("user.dir");
        System.out.println("基础路径是:"+basePath);
        String destPath=basePath+"/src/main/resources/static/pics";
        System.out.println("+++++++++文件保存至:"+destPath);
        File destFile=new File(destPath+"/"+fileName);
        //对保存文件的路径进行空校验
        if(!destFile.getParentFile().exists()){
            System.out.println("判断文件父母了是否为空");
            destFile.getParentFile().mkdir();
        }
        try {
            System.out.println("没有输出吗?");
            multipartFile.transferTo(destFile);
            System.out.println(destFile.getParentFile().getName());
            System.out.println("没有输出吗?");
            return "上传文件成功";
        }catch (IllegalStateException e){
            e.printStackTrace();
            return "上传文件失败";
        }catch (IOException e){
            e.printStackTrace();
            return "上传文件失败";
        }
    }
}

注意:

  1. @RequestParam("fileName") 指定需要的参数与view中传递的参数名称保持一致,Spring会自动将这个参数与multipartFile绑定
  2. 文件上传后保存至 resources/static/pics 目录下

项目代码:https://gitee.com/neimenggudaxue/SPtest4

上一篇 下一篇

猜你喜欢

热点阅读