multipart类型_文件夹整理合并工具

multipart类型_文件夹整理合并工具本篇案例学习MultipartFile工具类,案例超详细,深入浅出学习相关知识点!_multipartfile

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿你们奔赴在各自的热爱中…

最近项目一直在接触和文件上传相关的知识,趁最近忙里偷闲,那就从基础开始一点点的整理相关知识吧!
在这里插入图片描述

首先我们要认识一下Java中的流

1、“流”是一个抽象的概念,它是对输入输出设备的一种抽象理解,在java中,对数据的输入输出操作都是以“流”的方式进行的。

2、“流”具有方向性,输入流、输出流是相对的。当程序需要从数据源中读入数据的时候就会开启一个输入流,相反,写出数据到某个数据源目的地的时候也会开启一个输出流。

3、数据源可以是文件、内存或者网络等。


接着我们一起看看:MultipartFile工具类

MultipartFile是SpringMVC提供简化上传操作的工具类。

在不使用框架之前,都是使用原生的HttpServletRequest来接收上传的数据,文件是以二进制流传递到后端的,然后需要我们自己转换为File类。使用了MultipartFile工具类之后,我们对文件上传的操作就简便许多了。

来学习一下MultipartFile工具类全部的接口方法(我已经备注好了哈哈)

package org.springframework.web.multipart;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import org.springframework.core.io.InputStreamSource;
import org.springframework.core.io.Resource;
import org.springframework.lang.Nullable;
import org.springframework.util.FileCopyUtils;

public interface MultipartFile extends InputStreamSource { 
   
    //getName() 返回参数的名称
    String getName();
    //获取源文件的昵称
    @Nullable
    String getOriginalFilename();
    //getContentType() 返回文件的内容类型
    @Nullable
    String getContentType();
    //isEmpty() 判断是否为空,或者上传的文件是否有内容
    boolean isEmpty();
    //getSize() 返回文件大小 以字节为单位
    long getSize();
    //getBytes() 将文件内容转化成一个byte[] 返回
    byte[] getBytes() throws IOException;
    //getInputStream() 返回InputStream读取文件的内容
    InputStream getInputStream() throws IOException;

    default Resource getResource() { 
   
        return new MultipartFileResource(this);
    }
    //transferTo是复制file文件到指定位置(比如D盘下的某个位置),不然程序执行完,文件就会消失,程序运行时,临时存储在temp这个文件夹中
    void transferTo(File var1) throws IOException, IllegalStateException;

    default void transferTo(Path dest) throws IOException, IllegalStateException { 
   
        FileCopyUtils.copy(this.getInputStream(), Files.newOutputStream(dest));
    }
}

InputStreamSource 这个接口本质上返回的还是一个InputStream 流对象

package org.springframework.core.io;

import java.io.IOException;
import java.io.InputStream;

public interface InputStreamSource { 
   
	//定位并打开资源,返回资源对应的输入流。
    //每次调用都会返回新的输入流,调用者在使用完毕后必须关闭该资源。 
    InputStream getInputStream() throws IOException;
}

正常的文件上传接口你可以写一些帮助类这样就可以帮助你更好的筛选文件了,当然很多条件最好在前端也完成,这里我分享过el-upload组件可以简单参考

Element-UI中el-upload上传组件(demo详解)

比如:你要现在文件类型,大小等等都可以上传组件完成限制,这样减轻服务器的压力

当然Java中也可以写一些校验相关的帮助类,帮助我们筛选,如下:仅供参考

//简单的分享一下吧,仅仅给参考
    private String validateImg(MultipartFile file) { 
   
        if (file == null) { 
   
            throw new RuntimeException("图片不能为空");
        }
        if (file.getSize() >= 20 * 1024 * 1024) { 
   
            throw new RuntimeException("图片大小超出最大限制");
        }
        boolean isPic = FileUtil.isPic(file.getOriginalFilename());
        if (!isPic) { 
   
            throw new RuntimeException("图片格式错误");
        }
        String fileName = Objects.requireNonNull(file.getOriginalFilename()).length() > 50 ? file.getOriginalFilename().substring(0, 50) : file.getOriginalFilename();
        return fileName;
    }

The best investment is to invest in yourself.

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

2020.12.31 22:36 马上2021年了,祝大家在新的一年有更多的进步,愿你们奔赴在自己的热爱里!

今天的文章multipart类型_文件夹整理合并工具分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/75726.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注