Springboot使用MultipartFile方式上传文件

什么是MultipartFile
MultipartFile是spring类型,代表HTML中form-data方式上传的文件,包含二进制数据+文件名称。【来自百度知道】

上传文件html部分

<form action="fileUpload" method="post" enctype="multipart/form-data">
    <input type="file" multiple name="file" class="input-file"/>
	<button type="submit" class="btn btn-primary" style="width: 100px;">提交button>
form>

我这里是从我项目中截取出来的一小部分并做了简化,主要部分如上所示。

这里就有我踩过的坑了!

首先第一点,上传文件必须是发送POST请求,所以form表单中必须标明是POST请求(method=“post”)

第二点就是form表单中必须加上 enctype=“multipart/form-data” 这个属性,这是要告诉后台这条是一个multipart请求,不然后台识别不出这个请求是一个上传文件请求

后台上传文件Controller

package com.jhun.gdp.controller;

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

import java.io.File;
import java.util.UUID;

@Controller
public class StuFileUploadController {
     
    @RequestMapping("/fileUpload")
    @ResponseBody
    public String fileUpload(@RequestParam("file") MultipartFile file){
     
        String result = "";
        if(file.isEmpty()){
     
            result = "文件为空";
        }
        //文件名
        String fileName = file.getOriginalFilename();
        //获取后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        String filePath = "C:\\Users\\Administrator\\Desktop\\gdp备份文件\\gdp备份文件\\Server\\src\\main\\resources\\static\\upload\\";
        //新文件名
        fileName = UUID.randomUUID()+suffixName;
        File dest = new File(filePath+fileName);
        if(!dest.getParentFile().exists()){
     
            dest.getParentFile().mkdir();
        }
        try{
     
            file.transferTo(dest);
        }catch (Exception e){
     
            e.printStackTrace();
        }
        String path = filePath+fileName;
        System.out.println(result);
        System.out.println(path);
        return result;
    }
}

这里的上传文件的路径为你存储文件的文件夹的绝对路径

UUID.randomUUID()的作用是生成文件名的唯一识别码,让你上传的文件名唯一,方便存入数据库并读取。

我最后上传文件在文件夹里是这样的:
Springboot使用MultipartFile方式上传文件_第1张图片

最后欢迎访问我的个人博客:我的个人博客

你可能感兴趣的:(Springboot,springboot,java,上传文件)