package com.ruoyi.account.controller;
|
|
import com.alibaba.fastjson2.util.UUIDUtils;
|
import com.ruoyi.account.config.FileUploadConfig;
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
import com.ruoyi.common.security.service.TokenService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
import java.io.File;
|
import java.io.IOException;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.UUID;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* 文件上传控制类
|
*
|
* @author junelee
|
* @date 2020/3/20 20:21
|
*/
|
@Api(tags = "服务器文件上传")
|
@RestController
|
@RequestMapping("/file/")
|
public class FileController {
|
|
@Autowired
|
private FileUploadConfig fileUploadConfig;
|
|
@Resource
|
private TokenService tokenService;
|
|
@Resource
|
private RedisTemplate redisTemplate;
|
|
|
|
@ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
|
@PostMapping(value = "upload", headers = "content-type=multipart/form-data")
|
public AjaxResult uploadImageMany(@RequestParam(value = "file") MultipartFile mf) throws IOException {
|
Long userId = tokenService.getLoginUserApplet().getUserId();
|
if(null == userId){
|
return AjaxResult.error("请先登录");
|
}
|
if (mf.isEmpty()) {
|
return AjaxResult.error("请传入文件!");
|
}
|
String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
String realPath = fileUploadConfig.getLocation() + TimeDir;
|
File file = new File(realPath);
|
// 没有目录就创建
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
// 获取文件名称
|
String filename = mf.getOriginalFilename();
|
if(filename.contains("../")){
|
filename = filename.replaceAll("\\.\\./", "");
|
}
|
// 获取文件后缀
|
String ext = filename.substring(filename.lastIndexOf(".") + 1);
|
// 检查文件类型
|
if (!fileUploadConfig.getAllowExt().contains(ext)) {
|
return AjaxResult.error("上传文件格式不正确,仅支持" + fileUploadConfig.getAllowExt());
|
}
|
filename = UUID.randomUUID() + "." + ext;
|
File targetFile = new File(realPath, filename);//目标文件
|
//开始从源文件拷贝到目标文件
|
//传图片一步到位
|
mf.transferTo(targetFile);
|
//拼接数据
|
String imgstr = fileUploadConfig.getAccessPath() + TimeDir +"/"+ filename;
|
redisTemplate.opsForValue().set("file:" + userId, filename, 1, TimeUnit.HOURS);
|
return AjaxResult.success(imgstr);
|
}
|
@ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
|
@PostMapping(value = "uploadManage", headers = "content-type=multipart/form-data")
|
public AjaxResult uploadManage(@RequestParam(value = "file") MultipartFile mf) throws IOException {
|
Long userId = tokenService.getLoginUser().getUserid();
|
if(null == userId){
|
return AjaxResult.error("请先登录");
|
}
|
if (mf.isEmpty()) {
|
return AjaxResult.error("请传入文件!");
|
}
|
String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
String realPath = fileUploadConfig.getLocation() + TimeDir;
|
File file = new File(realPath);
|
// 没有目录就创建
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
// 获取文件名称
|
String filename = mf.getOriginalFilename();
|
if(filename.contains("../")){
|
filename = filename.replaceAll("\\.\\./", "");
|
}
|
// 获取文件后缀
|
String ext = filename.substring(filename.lastIndexOf(".") + 1);
|
// 检查文件类型
|
if (!fileUploadConfig.getAllowExt().contains(ext)) {
|
return AjaxResult.error("上传文件格式不正确,仅支持" + fileUploadConfig.getAllowExt());
|
}
|
filename = UUID.randomUUID() + "." + ext;
|
File targetFile = new File(realPath, filename);//目标文件
|
//开始从源文件拷贝到目标文件
|
//传图片一步到位
|
mf.transferTo(targetFile);
|
//拼接数据
|
String imgstr = fileUploadConfig.getAccessPath() + TimeDir +"/"+ filename;
|
redisTemplate.opsForValue().set("file:" + userId, filename, 1, TimeUnit.HOURS);
|
return AjaxResult.success(imgstr);
|
}
|
|
|
// @ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
|
// @PostMapping(value = "strUpload", headers = "content-type=multipart/form-data")
|
// public String strUpload(@RequestParam(value = "file") MultipartFile mf,@RequestParam(value = "fileName")String fileName) throws IOException {
|
// if (mf.isEmpty()) {
|
// return "请传入文件!";
|
// }
|
// String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
// String realPath = fileUploadConfig.getQrLocation() + TimeDir;
|
// File file = new File(realPath);
|
// // 没有目录就创建
|
// if (!file.exists()) {
|
// file.mkdirs();
|
// }
|
// File targetFile = new File(realPath, fileName);//目标文件
|
// //开始从源文件拷贝到目标文件
|
// //传图片一步到位
|
// mf.transferTo(targetFile);
|
// //拼接数据
|
// return fileUploadConfig.getQrLocation() + TimeDir +"\\"+ fileName;
|
// }
|
|
@ApiOperation(value = "单文件上传", notes = "单文件上传,rename 默认不重命名")
|
@PostMapping(value = "strUpload", headers = "content-type=multipart/form-data")
|
public String strUpload(@RequestParam(value = "file") MultipartFile mf,@RequestParam(value = "fileName")String fileName) throws IOException {
|
if (mf.isEmpty()) {
|
return "请传入文件!";
|
}
|
String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
// String realPath = "D:\\file\\" + TimeDir;
|
String realPath = fileUploadConfig.getLocation() + TimeDir;
|
File file = new File(realPath);
|
// 没有目录就创建
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
File targetFile = new File(realPath, fileName);//目标文件
|
//开始从源文件拷贝到目标文件
|
//传图片一步到位
|
mf.transferTo(targetFile);
|
String imgstr = fileUploadConfig.getAccessPath() + TimeDir +"/"+ fileName;
|
//拼接数据
|
// return TimeDir +"/"+ fileName;
|
return imgstr;
|
}
|
|
@ApiOperation(value = "单文件上传(覆盖服务器原文件)", notes = "单文件上传,rename 默认不重命名")
|
@PostMapping(value = "test/upload", headers = "content-type=multipart/form-data")
|
public AjaxResult uploadTest(@RequestParam(value = "file") MultipartFile mf) throws IOException {
|
if (mf.isEmpty()) {
|
return AjaxResult.error("请传入文件!");
|
}
|
String TimeDir = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
String realPath = fileUploadConfig.getLocation() + "2021-11-17";
|
File file = new File(realPath);
|
// 没有目录就创建
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
// 判断文件大小
|
String filename = "6u2mGlqHkeE75e2ab51b4a03c6982ff7d68f4c024d43.jpg";
|
// 获取文件后缀
|
String ext = filename.substring(filename.lastIndexOf("."), filename.length());
|
// 检查文件类型
|
if (!fileUploadConfig.getAllowExt().contains(ext)) {
|
return AjaxResult.error("上传文件格式不正确,仅支持" + fileUploadConfig.getAllowExt());
|
}
|
File targetFile = new File(realPath, filename);//目标文件
|
//开始从源文件拷贝到目标文件
|
//传图片一步到位
|
mf.transferTo(targetFile);
|
//拼接数据
|
String imgstr = fileUploadConfig.getAccessPath() + "2021-11-17" + "/" + filename;
|
return AjaxResult.success(imgstr);
|
}
|
|
|
}
|