赞
踩
若依文件上传:深度解析若依文件上传操作
若依:文件上传:示例:通过若依自带的文件上传的接口实现文件上传的步骤。
近几天在完成一个文件上传和下载的一个需求开发,对于内部实现充满好奇,因此观察了若依的内部的实现步骤,并进行解析,最后记录自己的学习成果
对于上述图片的标注地点,实际上是文件的上传位置,是文件上传到的地方。
String fileName = FileUploadUtils.upload(filePath, file);
以上的代码会进行文件的上传 ,同时会生成一个具有新名称的文件,同时会上传到我们指定的路径的文件中去,同时我们可以设置上传文件的大小,上传文件的名称的大小。
/**
* 默认大小 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();
比对是否是我们需要的文件的类型,通过获取文件的后缀名,如果后缀名不符合要求抛出异常
/**
* 获取文件名的后缀
*
* @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;
}
获取文件的绝对路径进行上传
String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
file.transferTo(Paths.get(absPath));
本质依然是i/o流的传输,但是在命名上做足了功夫
default void transferTo(Path dest) throws IOException, IllegalStateException {
FileCopyUtils.copy(getInputStream(), Files.newOutputStream(dest));
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。