当前位置:   article > 正文

若依分离版的文件上传_若依文件上传

若依文件上传

若依分离版的文件上传详解

若依文件上传:深度解析若依文件上传操作

若依:文件上传:示例:通过若依自带的文件上传的接口实现文件上传的步骤。


问题描述

近几天在完成一个文件上传和下载的一个需求开发,对于内部实现充满好奇,因此观察了若依的内部的实现步骤,并进行解析,最后记录自己的学习成果
在这里插入图片描述

对于上述图片的标注地点,实际上是文件的上传位置,是文件上传到的地方。

String fileName = FileUploadUtils.upload(filePath, file);
  • 1

以上的代码会进行文件的上传 ,同时会生成一个具有新名称的文件,同时会上传到我们指定的路径的文件中去,同时我们可以设置上传文件的大小,上传文件的名称的大小。

    /**
     * 默认大小 50M
     */
    public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024;

    /**
     * 默认的文件名最大长度 100
     */
    public static final int DEFAULT_FILE_NAME_LENGTH = 100;

    /**
     * 默认上传的地址
     */
    private static String defaultBaseDir = RuoYiConfig.getProfile();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

比对是否是我们需要的文件的类型,通过获取文件的后缀名,如果后缀名不符合要求抛出异常

    /**
     * 获取文件名的后缀
     *
     * @param file 表单文件
     * @return 后缀名
     */
    public static final String getExtension(MultipartFile file)
    {
        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
        if (StringUtils.isEmpty(extension))
        {
            extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
        }
        return extension;
    }
    /**
     * 判断MIME类型是否是允许的MIME类型
     *
     * @param extension
     * @param allowedExtension
     * @return
     */
    public static final boolean isAllowedExtension(String extension, String[] allowedExtension)
    {
        for (String str : allowedExtension)
        {
            if (str.equalsIgnoreCase(extension))
            {
                return true;
            }
        }
        return false;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

获取文件的绝对路径进行上传

        String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
        file.transferTo(Paths.get(absPath));
  • 1
  • 2

本质依然是i/o流的传输,但是在命名上做足了功夫

	default void transferTo(Path dest) throws IOException, IllegalStateException {
		FileCopyUtils.copy(getInputStream(), Files.newOutputStream(dest));
	}
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/438741
推荐阅读
相关标签
  

闽ICP备14008679号