文件上传(MultipartFile)

Exisi 2022-09-28 15:34:55
Categories: Tags:

 

方法

说明

getBytes()

以字节数组的形式返回文件内容

getContentType()

返回文件的内容类型

getInputStream()

返回一个InputStream来读取文件的内容

getName()

返回多部分形式的参数名称

getOriginalFilename()

返回客户端文件系统中的原始文件名。

getResource()

返回此MultipartFileResource表示。

getSize()

以字节为单位返回文件的大小。

isEmpty()

返回上传的文件是否为空,即在多部分形式中没有选择任何文件,或者选择的文件没有内容。

transferTo()

将接收到的文件传输到给定的目标文件。

transferTo()

将接收到的文件传输到给定的目标文件。

 

# 上传文件总的最大值

spring.servlet.multipart.max-request-size=10MB

# 单个文件的最大值

spring.servlet.multipart.max-file-size=10MB

示例

@Controller

public class FileUploadController {

 

    /**

     * 文件上传类

     * 文件会自动绑定到MultipartFile

     * @param request 获取请求信息

     * @param description 文件描述

     * @param file 上传的文件

     * @return 上传成功或失败结果

     * @throws IOException 

     * @throws IllegalStateException 

     */

    @PostMapping("/upload")

    public String upload(HttpServletRequest request, 

            @RequestParam("description") String description,

            @RequestParam("file") MultipartFile file) throws IllegalStateException, IOException {

        

        // 获取文件描述参数 description,纯粹测试使用

        System.out.println("description = " + description);

        

        // 测试MultipartFile接口的各个方法

        System.out.println("文件类型ContentType=" + file.getContentType());

        System.out.println("文件组件名称Name=" + file.getName());

        System.out.println("文件原名称OriginalFileName=" + file.getOriginalFilename());

        System.out.println("文件大小Size=" + file.getSize()/1024 + "KB");

        

        // 如果文件不为空,写入上传路径,进行文件上传

        if (!file.isEmpty()) {

            

            // 构建上传文件的存放路径

            String path = request.getServletContext().getRealPath("/upload/");

            System.out.println("path = " + path);

            

            // 获取上传的文件名称,并结合存放路径,构建新的文件名称

            String filename = file.getOriginalFilename();

            File filepath = new File(path, filename);

            

            // 判断路径是否存在,不存在则新创建一个

            if (!filepath.getParentFile().exists()) {

                filepath.getParentFile().mkdirs();

            }

            

            // 将上传文件保存到目标文件目录

            file.transferTo(new File(path + File.separator + filename));

            return "success";

        } else {

            return "error";

        }

    }

}