签入版本
This commit is contained in:
@@ -0,0 +1,200 @@
|
||||
// +======================================================================
|
||||
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
|
||||
// +----------------------------------------------------------------------
|
||||
// | 官方平台: https://www.xiaomayicloud.com
|
||||
// +======================================================================
|
||||
// | 【知识产权声明】
|
||||
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
|
||||
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
|
||||
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
|
||||
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
|
||||
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
|
||||
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
|
||||
// | 申请任何知识产权
|
||||
// | 5. 权利保留:未在本协议中明示授予的一切权利
|
||||
// | 均由小蚂蚁云团队保留
|
||||
// +======================================================================
|
||||
// | 【授权状态说明】
|
||||
// | 1. 未授权状态:用户未购买有效的商业许可证
|
||||
// | 2. 商业授权:已购买正式商业许可证的用户
|
||||
// +======================================================================
|
||||
// | 【绝对禁止条款】
|
||||
// | 无论授权状态如何,任何用户均严格禁止以下行为:
|
||||
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
|
||||
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
|
||||
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
|
||||
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
|
||||
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
|
||||
// +======================================================================
|
||||
// | 【商业授权许可范围】
|
||||
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
|
||||
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
|
||||
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
|
||||
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
|
||||
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
|
||||
// +======================================================================
|
||||
// | 【许可证获取】
|
||||
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
|
||||
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
|
||||
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
|
||||
// +======================================================================
|
||||
// | 【合法使用要求】
|
||||
// | 1. 仅限用于合法合规的软件研发
|
||||
// | 2. 严禁用于任何违法、侵权或恶意行为
|
||||
// | 3. 严禁违反我国法律法规和政策
|
||||
// +======================================================================
|
||||
// | 【免责声明】
|
||||
// | 因使用本框架导致的以下情况,我们概不负责:
|
||||
// | 1. 项目研发中的意外、疏忽、违约等风险
|
||||
// | 2. 侵犯第三方知识产权或其他合法权益
|
||||
// | 3. 任何直接、间接、附带或衍生一切损失
|
||||
// | 4. 用户违规违法行为的一切法律后果
|
||||
// +======================================================================
|
||||
// | 【协议重要提示】
|
||||
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
|
||||
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
|
||||
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
|
||||
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
|
||||
// +======================================================================
|
||||
// | 【侵权举报与合规】
|
||||
// | 1. 知识产权侵权举报:请联系官方客服
|
||||
// | 2. 许可证合规咨询:xiaomayicloud@163.com
|
||||
// | 3. 违规使用将终止授权并追究责任
|
||||
// | 4. 无条件配合司法机关调查取证
|
||||
// | 5. 保留一切法律追诉权利
|
||||
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
|
||||
// +======================================================================
|
||||
|
||||
package com.xiaomayi.file.utils;
|
||||
|
||||
import com.xiaomayi.core.config.AppConfig;
|
||||
import com.xiaomayi.core.constant.AppConstant;
|
||||
import com.xiaomayi.core.exception.BizException;
|
||||
import com.xiaomayi.core.utils.CommonUtils;
|
||||
import com.xiaomayi.core.utils.DateUtils;
|
||||
import com.xiaomayi.core.utils.StringUtils;
|
||||
import com.xiaomayi.file.vo.UploadFileVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 文件上传工具类
|
||||
* </p>
|
||||
*
|
||||
* @author 小蚂蚁云团队
|
||||
* @since 2024-01-23
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class UploadUtils {
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
*
|
||||
* @param multipartFile 文件
|
||||
* @param name 存储目录
|
||||
* @return 返回结果
|
||||
*/
|
||||
public UploadFileVO uploadFile(MultipartFile multipartFile, String name) {
|
||||
try {
|
||||
log.info(" >>> 文件上传入口... <<< ");
|
||||
// 上传文件判空
|
||||
if (multipartFile == null) {
|
||||
throw new BizException();
|
||||
}
|
||||
// 存储目录
|
||||
String appPath = AppConfig.getProfile();
|
||||
// 创建文件存放目录
|
||||
String savePath = name + "/" + DateUtils.dateTime();
|
||||
// 创建上传文件目录
|
||||
File file = new File(appPath + savePath);
|
||||
if (!file.mkdir()) {
|
||||
file.mkdirs();
|
||||
}
|
||||
|
||||
// 文件原始名称
|
||||
String originalName = multipartFile.getOriginalFilename();
|
||||
// 文件类型
|
||||
String fileType = multipartFile.getContentType();
|
||||
// 文件大小
|
||||
long fileSize = multipartFile.getSize();
|
||||
|
||||
// 获取文件后缀
|
||||
String fileExtension = FilenameUtils.getExtension(originalName);
|
||||
// 自定义上传文件名
|
||||
String fileName = System.currentTimeMillis() + new Random().nextInt(1000) + "." + fileExtension;
|
||||
// 目标存储路径
|
||||
String filePath = savePath + "/" + fileName;
|
||||
// 保存到一个目标文件中
|
||||
multipartFile.transferTo(new File(appPath + filePath));
|
||||
|
||||
// 文件地址前缀替换,此处加上资源放行前缀:/file,便于静态文件映射访问
|
||||
filePath = "/" + filePath.replaceAll("\\\\+", "/");
|
||||
|
||||
// 实例化上传文件VO
|
||||
UploadFileVO uploadFileVO = new UploadFileVO();
|
||||
// 文件原始名称
|
||||
uploadFileVO.setOriginalName(originalName);
|
||||
// 文件后缀
|
||||
uploadFileVO.setFileExtension(fileExtension);
|
||||
// 文件类型
|
||||
uploadFileVO.setFileType(fileType);
|
||||
// 文件大小
|
||||
uploadFileVO.setFileSize(fileSize);
|
||||
// 文件名称
|
||||
uploadFileVO.setFileName(fileName);
|
||||
// 文件路径
|
||||
uploadFileVO.setFilePath(filePath);
|
||||
// 文件地址
|
||||
uploadFileVO.setFileUrl(CommonUtils.getFileURL(filePath));
|
||||
log.info(" >>> 文件上传结束... <<< ");
|
||||
return uploadFileVO;
|
||||
} catch (Exception e) {
|
||||
log.error("文件上传异常:{}", e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量上传文件
|
||||
*
|
||||
* @param multipartFiles 文件对象列表
|
||||
* @param name 存储目录
|
||||
* @return 返回结果
|
||||
*/
|
||||
public List<UploadFileVO> uploadFiles(MultipartFile[] multipartFiles, String name) {
|
||||
try {
|
||||
// 参数判空
|
||||
if (StringUtils.isEmpty(multipartFiles)) {
|
||||
throw new BizException();
|
||||
}
|
||||
// 实例化上传文件VO列表
|
||||
List<UploadFileVO> list = new ArrayList<>();
|
||||
// 遍历文件上传对象
|
||||
for (MultipartFile file : multipartFiles) {
|
||||
// 调用文件上传公共方法
|
||||
UploadFileVO uploadFileVO = uploadFile(file, name);
|
||||
if (StringUtils.isEmpty(uploadFileVO)) {
|
||||
continue;
|
||||
}
|
||||
// 加入列表
|
||||
list.add(uploadFileVO);
|
||||
}
|
||||
return list;
|
||||
} catch (Exception e) {
|
||||
log.error("文件上传异常:{}", e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user