若依已经将文件上传的后端方法封装完毕
com.ruoyi.web.controller.common.CommonController 下uploadFile方法
开始debug调试
一 .获取文件上传路径
**
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
进入RuoYiConfig类下找到getUploadPath()方法
/**
* 获取上传路径
*/
public static String getUploadPath()
{
return getProfile() + "/upload";
}
public static String getProfile()
{
return profile;
}
/** 上传路径 */
private static String profile;
其中静态变量profile为 配置文件application.yml 下更改(注解@ConfigurationProperties获取配置文件中参数)
得到filePath
二. 获取新的文件名
String fileName = FileUploadUtils.upload(filePath, file);
FileUploadUtils(文件上传工具类下)upload 方法
/**
* 根据文件路径上传
*
* @param baseDir 相对应用的基目录
* @param file 上传的文件
* @return 文件名称
* @throws IOException
*/
public static final String upload(String baseDir, MultipartFile file) throws IOException
{
try
{
return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
}
catch (Exception e)
{
throw new IOException(e.getMessage(), e);
}
}
upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION)
传入文件路径,文件流,允许传入文件格式
/**
* 文件上传
*
* @param baseDir 相对应用的基目录
* @param file 上传的文件
* @param allowedExtension 上传文件类型
* @return 返回上传成功的文件名
* @throws FileSizeLimitExceededException 如果超出最大大小
* @throws FileNameLengthLimitExceededException 文件名太长
* @throws IOException 比如读写文件出错时
* @throws InvalidExtensionException 文件校验异常
*/
public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)
throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
InvalidExtensionException
{
int fileNamelength = file.getOriginalFilename().length();
if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
{
throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
}
assertAllowed(file, allowedExtension);
String fileName = extractFilename(file);
File desc = getAbsoluteFile(baseDir, fileName);
file.transferTo(desc);
String pathFileName = getPathFileName(baseDir, fileName);
return pathFileName;
}
判断文件长度是否大于默认值,判断文件是否允许上传,
使用extractFilename方法获取新的文件名
/**
* 编码文件名
*/
public static final String extractFilename(MultipartFile file)
{ //获得文件原始名
String fileName = file.getOriginalFilename();
//获取文件格式
String extension = getExtension(file);
//DateUtils.datePath()获取当前日期 并将三部分拼接形成新的文件名
fileName = DateUtils.datePath() + "/" + IdUtils.fastUUID() + "." + extension;
return fileName;
}
file.transferTo(desc) 传输文件,传输完毕,得到fileName
三、获取访问路径 ,拼接文件名 ,形成url
String url = serverConfig.getUrl() + fileName;
四、返回前端请求
AjaxResult ajax = AjaxResult.success();
ajax.put("fileName", fileName);
ajax.put("url", url);
return ajax;