base64图片上传
This commit is contained in:
parent
7c8e5eb3b0
commit
dfec21bbd6
|
|
@ -0,0 +1,75 @@
|
|||
package com.bonus.core.common.core.util;
|
||||
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class Base64DecodedMultipartFile implements MultipartFile {
|
||||
private final byte[] imgContent;
|
||||
private final String header;
|
||||
|
||||
public Base64DecodedMultipartFile(byte[] imgContent, String header) {
|
||||
this.imgContent = imgContent;
|
||||
this.header = header.split(";")[0];
|
||||
}
|
||||
|
||||
public static MultipartFile base64ToMultipart(String base64) {
|
||||
String[] baseSplit = base64.split(",");
|
||||
byte[] b = Base64.decode(baseSplit[1]);
|
||||
|
||||
for(int i = 0; i < b.length; ++i) {
|
||||
if (b[i] < 0) {
|
||||
b[i] = (byte)(b[i] + 256);
|
||||
}
|
||||
}
|
||||
|
||||
return new Base64DecodedMultipartFile(b, baseSplit[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
double var10000 = (double)System.currentTimeMillis() + Math.random();
|
||||
return "" + var10000 + "." + this.header.split("/")[1];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOriginalFilename() {
|
||||
long var10000 = System.currentTimeMillis() + (long)((int)(Math.random() * 10000.0));
|
||||
return "" + var10000 + "." + this.header.split("/")[1];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContentType() {
|
||||
return this.header.split(":")[1];
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return this.imgContent == null || this.imgContent.length == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getSize() {
|
||||
return (long)this.imgContent.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] getBytes() throws IOException {
|
||||
return this.imgContent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getInputStream() {
|
||||
return new ByteArrayInputStream(this.imgContent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transferTo(File dest) throws IOException, IllegalStateException {
|
||||
FileUtil.writeBytes(this.imgContent, dest);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
package com.bonus.core.common.enums;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public enum FileNameSuffixEnum {
|
||||
FILE_TYPE_JPG("jpg", "JPG"),
|
||||
FILE_TYPE_JPEG("jpeg", "JPEG"),
|
||||
FILE_TYPE_GIF("gif", "GIF"),
|
||||
FILE_TYPE_BMP("bmp", "BMP"),
|
||||
FILE_TYPE_PNG("png", "PNG"),
|
||||
FILE_TYPE_APK("apk", "APK"),
|
||||
FILE_TYPE_BIN("bin", "BIN"),
|
||||
FILE_TYPE_PFX("pfx", "PFX"),
|
||||
FILE_TYPE_CRT("crt", "CRT"),
|
||||
FILE_TYPE_CER("cer", "CER"),
|
||||
FILE_TYPE_KEY("key", "KER"),
|
||||
FILE_TYPE_P12("p12", "P12"),
|
||||
FILE_TYPE_ZIP("zip", "ZIP"),
|
||||
FILE_TYPE_TXT("txt", "TXT"),
|
||||
FILE_TYPE_MP4("mp4", "MP4"),
|
||||
FILE_TYPE_AVI("avi", "AVI"),
|
||||
FILE_TYPE_FLV("flv", "FLV"),
|
||||
FILE_TYPE_MKV("mkv", "MKV"),
|
||||
FILE_TYPE_MOV("mov", "MOV"),
|
||||
FILE_TYPE_RMVB("rmvb", "RMVB"),
|
||||
FILE_TYPE_WMV("wmv", "WMV"),
|
||||
FILE_TYPE_ICO("ico", "ICO");
|
||||
|
||||
private final String key;
|
||||
private final String desc;
|
||||
|
||||
private FileNameSuffixEnum(String key, String desc) {
|
||||
this.key = key;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public static List<String> getImgNameList() {
|
||||
List<String> imgNameList = new ArrayList();
|
||||
imgNameList.add(FILE_TYPE_JPG.getDesc());
|
||||
imgNameList.add(FILE_TYPE_JPEG.getDesc());
|
||||
imgNameList.add(FILE_TYPE_GIF.getDesc());
|
||||
imgNameList.add(FILE_TYPE_BMP.getDesc());
|
||||
imgNameList.add(FILE_TYPE_PNG.getDesc());
|
||||
return imgNameList;
|
||||
}
|
||||
|
||||
public static List<String> getPhotoNameList() {
|
||||
List<String> imgNameList = new ArrayList();
|
||||
imgNameList.add(FILE_TYPE_JPG.getDesc());
|
||||
imgNameList.add(FILE_TYPE_JPEG.getDesc());
|
||||
imgNameList.add(FILE_TYPE_PNG.getDesc());
|
||||
return imgNameList;
|
||||
}
|
||||
|
||||
public static List<String> getAllFileNameList() {
|
||||
List<String> fileNameList = getImgNameList();
|
||||
fileNameList.add(FILE_TYPE_APK.getDesc());
|
||||
fileNameList.add(FILE_TYPE_BIN.getDesc());
|
||||
fileNameList.add(FILE_TYPE_PFX.getDesc());
|
||||
fileNameList.add(FILE_TYPE_CRT.getDesc());
|
||||
fileNameList.add(FILE_TYPE_CER.getDesc());
|
||||
fileNameList.add(FILE_TYPE_KEY.getKey());
|
||||
fileNameList.add(FILE_TYPE_P12.getDesc());
|
||||
fileNameList.add(FILE_TYPE_TXT.getDesc());
|
||||
fileNameList.add(FILE_TYPE_ZIP.getDesc());
|
||||
fileNameList.add(FILE_TYPE_ICO.getDesc());
|
||||
fileNameList.add(FILE_TYPE_MP4.getDesc());
|
||||
fileNameList.add(FILE_TYPE_AVI.getDesc());
|
||||
fileNameList.add(FILE_TYPE_FLV.getDesc());
|
||||
fileNameList.add(FILE_TYPE_MKV.getDesc());
|
||||
fileNameList.add(FILE_TYPE_MOV.getDesc());
|
||||
fileNameList.add(FILE_TYPE_RMVB.getDesc());
|
||||
fileNameList.add(FILE_TYPE_WMV.getDesc());
|
||||
return fileNameList;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return this.desc;
|
||||
}
|
||||
|
||||
// $FF: synthetic method
|
||||
private static FileNameSuffixEnum[] $values() {
|
||||
return new FileNameSuffixEnum[]{FILE_TYPE_JPG, FILE_TYPE_JPEG, FILE_TYPE_GIF, FILE_TYPE_BMP, FILE_TYPE_PNG, FILE_TYPE_APK, FILE_TYPE_BIN, FILE_TYPE_PFX, FILE_TYPE_CRT, FILE_TYPE_CER, FILE_TYPE_KEY, FILE_TYPE_P12, FILE_TYPE_ZIP, FILE_TYPE_TXT, FILE_TYPE_MP4, FILE_TYPE_AVI, FILE_TYPE_FLV, FILE_TYPE_MKV, FILE_TYPE_MOV, FILE_TYPE_RMVB, FILE_TYPE_WMV, FILE_TYPE_ICO};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
package com.bonus.core.common.enums;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public enum FileUploadSourceEnum {
|
||||
DISHES("dishes", "菜品"),
|
||||
CUST("cust", "人员"),
|
||||
TABLE("table", "餐桌"),
|
||||
FACE("face", "人脸识别"),
|
||||
PLACE("place", "位置信息"),
|
||||
STALL("stall", "档口信息"),
|
||||
SYSTEM("system", "系统"),
|
||||
ANDROID_APK("androidapk", "安卓apk"),
|
||||
ABC_MERCHANT_CERT_FILE("abccertfile", "农行商户证书"),
|
||||
SZRCB_PFX_FILE("szrcbpfxfile", "苏州农商行证书"),
|
||||
ANDROID_MENU_SELECT("androidmenuselect", "菜品识别采集"),
|
||||
EVALUATE("evaluate", "订单评价"),
|
||||
MATERIAL("material", "出入库原料"),
|
||||
SUPPLIER("supplier", "供应商资质信息"),
|
||||
COUPON("coupon", "餐券图片"),
|
||||
QUOTATION("quotation", "报价图片"),
|
||||
BACK_STAFF("backStaff", "后场人员"),
|
||||
DEVICE_LOG("leniu_device_log", "设备文件日志6608和6609专用"),
|
||||
ORDER_PLACE("orderPlace", "下单照片"),
|
||||
DEVICE_LOGINFO("deviceLogInfo", "设备日志上传"),
|
||||
DEVICE_UPDATE_ADMIN("deviceUpdateAdmin", "设备更新"),
|
||||
DEVICE_VIDEO("deviceVideo", "设备操作录像"),
|
||||
DEVICE_PIC("devicePic", "设备操作拍照"),
|
||||
SAMPLE("sample", "留样");
|
||||
|
||||
private final String key;
|
||||
private final String value;
|
||||
|
||||
private FileUploadSourceEnum(String key, String value) {
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static String getKey(String value) {
|
||||
FileUploadSourceEnum[] fileUploadSourceEnumList = values();
|
||||
FileUploadSourceEnum[] var2 = fileUploadSourceEnumList;
|
||||
int var3 = fileUploadSourceEnumList.length;
|
||||
|
||||
for(int var4 = 0; var4 < var3; ++var4) {
|
||||
FileUploadSourceEnum fileUploadSourceEnum = var2[var4];
|
||||
if (fileUploadSourceEnum.value().equals(value)) {
|
||||
return fileUploadSourceEnum.key();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String getValue(String key) {
|
||||
FileUploadSourceEnum[] fileUploadSourceEnumList = values();
|
||||
FileUploadSourceEnum[] var2 = fileUploadSourceEnumList;
|
||||
int var3 = fileUploadSourceEnumList.length;
|
||||
|
||||
for(int var4 = 0; var4 < var3; ++var4) {
|
||||
FileUploadSourceEnum fileUploadSourceEnum = var2[var4];
|
||||
if (fileUploadSourceEnum.key().equals(key)) {
|
||||
return fileUploadSourceEnum.value();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static List<String> getAllEnumsKeyList() {
|
||||
FileUploadSourceEnum[] fileUploadSourceEnumList = values();
|
||||
List<String> uploadKeyList = new ArrayList();
|
||||
FileUploadSourceEnum[] var2 = fileUploadSourceEnumList;
|
||||
int var3 = fileUploadSourceEnumList.length;
|
||||
|
||||
for(int var4 = 0; var4 < var3; ++var4) {
|
||||
FileUploadSourceEnum fileUploadSourceEnum = var2[var4];
|
||||
uploadKeyList.add(fileUploadSourceEnum.key);
|
||||
}
|
||||
|
||||
return uploadKeyList;
|
||||
}
|
||||
|
||||
public String key() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
// $FF: synthetic method
|
||||
private static FileUploadSourceEnum[] $values() {
|
||||
return new FileUploadSourceEnum[]{DISHES, CUST, TABLE, FACE, PLACE, STALL, SYSTEM, ANDROID_APK, ABC_MERCHANT_CERT_FILE, SZRCB_PFX_FILE, ANDROID_MENU_SELECT, EVALUATE, MATERIAL, SUPPLIER, COUPON, QUOTATION, BACK_STAFF, DEVICE_LOG, ORDER_PLACE, DEVICE_LOGINFO, DEVICE_UPDATE_ADMIN, DEVICE_VIDEO, DEVICE_PIC, SAMPLE};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
package com.bonus.core.common.sysfile.controller;
|
||||
|
||||
import com.bonus.common.core.web.controller.BaseController;
|
||||
import com.bonus.common.core.web.domain.AjaxResult;
|
||||
import com.bonus.core.common.core.util.Base64DecodedMultipartFile;
|
||||
import com.bonus.core.common.enums.FileNameSuffixEnum;
|
||||
import com.bonus.core.common.enums.FileUploadSourceEnum;
|
||||
import com.bonus.core.common.sysfile.dto.SysFileUploadDTO;
|
||||
import com.bonus.core.common.sysfile.service.SysFileService;
|
||||
import com.bonus.core.common.sysfile.vo.SysFileUploadVO;
|
||||
import com.bonus.encrypt.RequiresGuest;
|
||||
import com.bonus.utils.LeRequest;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping({"/api/v1/sysfile"})
|
||||
@Api(
|
||||
value = "sysfile",
|
||||
tags = {"文件管理"}
|
||||
)
|
||||
public class SysFileController{
|
||||
private static final Logger log = LoggerFactory.getLogger(SysFileController.class);
|
||||
private final SysFileService sysFileService;
|
||||
|
||||
|
||||
@PostMapping({"/upload/base64"})
|
||||
@RequiresGuest
|
||||
@ApiOperation("base64文件上传")
|
||||
public AjaxResult upload(@RequestBody @Valid SysFileUploadDTO dto) {
|
||||
MultipartFile file = Base64DecodedMultipartFile.base64ToMultipart(dto.getBase64File());
|
||||
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
|
||||
if (!FileNameSuffixEnum.getAllFileNameList().contains(suffix.toUpperCase())) {
|
||||
return AjaxResult.error("接收参数错误,请上传正确的文件格式");
|
||||
} else {
|
||||
String uploadKey = dto.getUploadKey();
|
||||
List<String> uploadKeyList = FileUploadSourceEnum.getAllEnumsKeyList();
|
||||
if (!uploadKeyList.contains(uploadKey)) {
|
||||
return AjaxResult.error("目前只支持指定文件路径的上传,请重试 ^_^");
|
||||
} else {
|
||||
SysFileUploadVO result = this.sysFileService.uploadFile(file, uploadKey);
|
||||
return AjaxResult.success("上传成功", result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public SysFileController(final SysFileService sysFileService) {
|
||||
this.sysFileService = sysFileService;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.bonus.core.common.sysfile.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.io.Serializable;
|
||||
|
||||
public class SysFileUploadDTO implements Serializable {
|
||||
@ApiModelProperty("base64文件")
|
||||
private @NotBlank(
|
||||
message = "base64文件不能为空 ^_^"
|
||||
) String base64File;
|
||||
@ApiModelProperty("上传标识")
|
||||
private @NotBlank(
|
||||
message = "上传标识不能为空 ^_^"
|
||||
) String uploadKey;
|
||||
|
||||
public String getBase64File() {
|
||||
return this.base64File;
|
||||
}
|
||||
|
||||
public String getUploadKey() {
|
||||
return this.uploadKey;
|
||||
}
|
||||
|
||||
public void setBase64File(final String base64File) {
|
||||
this.base64File = base64File;
|
||||
}
|
||||
|
||||
public void setUploadKey(final String uploadKey) {
|
||||
this.uploadKey = uploadKey;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package com.bonus.core.common.sysfile.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.bonus.core.common.sysfile.model.SysFile;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface SysFileMapper extends BaseMapper<SysFile> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,130 @@
|
|||
package com.bonus.core.common.sysfile.model;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@ApiModel("文件")
|
||||
public class SysFile extends Model<SysFile> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
@TableId(
|
||||
type = IdType.AUTO
|
||||
)
|
||||
@ApiModelProperty("文件编号")
|
||||
private Long id;
|
||||
@ApiModelProperty("文件名")
|
||||
private String fileName;
|
||||
@ApiModelProperty("原始文件名")
|
||||
private String original;
|
||||
@ApiModelProperty("存储桶名称")
|
||||
private String bucketName;
|
||||
@ApiModelProperty("文件类型")
|
||||
private String type;
|
||||
@ApiModelProperty("文件大小")
|
||||
private Long fileSize;
|
||||
@ApiModelProperty("创建者")
|
||||
private String createUser;
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
@ApiModelProperty("更新者")
|
||||
private String updateUser;
|
||||
@ApiModelProperty("更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
@TableLogic
|
||||
@ApiModelProperty("删除标记,1:已删除,0:正常")
|
||||
private Integer delFlag;
|
||||
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public String getFileName() {
|
||||
return this.fileName;
|
||||
}
|
||||
|
||||
public String getOriginal() {
|
||||
return this.original;
|
||||
}
|
||||
|
||||
public String getBucketName() {
|
||||
return this.bucketName;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public Long getFileSize() {
|
||||
return this.fileSize;
|
||||
}
|
||||
|
||||
public String getCreateUser() {
|
||||
return this.createUser;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreateTime() {
|
||||
return this.createTime;
|
||||
}
|
||||
|
||||
public String getUpdateUser() {
|
||||
return this.updateUser;
|
||||
}
|
||||
|
||||
public LocalDateTime getUpdateTime() {
|
||||
return this.updateTime;
|
||||
}
|
||||
|
||||
public Integer getDelFlag() {
|
||||
return this.delFlag;
|
||||
}
|
||||
|
||||
public void setId(final Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setFileName(final String fileName) {
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public void setOriginal(final String original) {
|
||||
this.original = original;
|
||||
}
|
||||
|
||||
public void setBucketName(final String bucketName) {
|
||||
this.bucketName = bucketName;
|
||||
}
|
||||
|
||||
public void setType(final String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public void setFileSize(final Long fileSize) {
|
||||
this.fileSize = fileSize;
|
||||
}
|
||||
|
||||
public void setCreateUser(final String createUser) {
|
||||
this.createUser = createUser;
|
||||
}
|
||||
|
||||
public void setCreateTime(final LocalDateTime createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public void setUpdateUser(final String updateUser) {
|
||||
this.updateUser = updateUser;
|
||||
}
|
||||
|
||||
public void setUpdateTime(final LocalDateTime updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public void setDelFlag(final Integer delFlag) {
|
||||
this.delFlag = delFlag;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package com.bonus.core.common.sysfile.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bonus.core.common.sysfile.model.SysFile;
|
||||
import com.bonus.core.common.sysfile.vo.SysFileUploadVO;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
public interface SysFileService extends IService<SysFile> {
|
||||
|
||||
SysFileUploadVO uploadFile(MultipartFile file, String uploadKey);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
package com.bonus.core.common.sysfile.service.impl;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bonus.common.core.exception.ServiceException;
|
||||
import com.bonus.core.common.enums.FileUploadSourceEnum;
|
||||
import com.bonus.core.common.sysfile.mapper.SysFileMapper;
|
||||
import com.bonus.core.common.sysfile.model.SysFile;
|
||||
import com.bonus.core.common.sysfile.service.SysFileService;
|
||||
import com.bonus.core.common.sysfile.vo.SysFileUploadVO;
|
||||
import com.bonus.core.common.utils.TenantContextHolder;
|
||||
import com.bonus.oss.OssProperties;
|
||||
import com.bonus.oss.service.OssTemplate;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
|
||||
@Service
|
||||
public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> implements SysFileService {
|
||||
private static final Logger log = LoggerFactory.getLogger(SysFileServiceImpl.class);
|
||||
@Resource
|
||||
@Lazy
|
||||
private OssProperties ossProperties;
|
||||
@Resource
|
||||
@Lazy
|
||||
private OssTemplate minioTemplate;
|
||||
|
||||
@Override
|
||||
public SysFileUploadVO uploadFile(MultipartFile file, String uploadKey) {
|
||||
Long merchantId = TenantContextHolder.getTenantId();
|
||||
String merchantIdString;
|
||||
if (merchantId != null && merchantId != -1L && merchantId != 1L) {
|
||||
merchantIdString = String.valueOf(merchantId);
|
||||
} else {
|
||||
merchantIdString = "unknown";
|
||||
}
|
||||
|
||||
String fileName;
|
||||
if (FileUploadSourceEnum.DEVICE_LOG.key().equalsIgnoreCase(uploadKey)) {
|
||||
fileName = file.getOriginalFilename();
|
||||
} else {
|
||||
String var10000 = IdUtil.simpleUUID();
|
||||
fileName = var10000 + "." + FileUtil.extName(file.getOriginalFilename());
|
||||
}
|
||||
|
||||
String fileUrl = merchantIdString + "/" + uploadKey + "/" + fileName;
|
||||
SysFileUploadVO result = new SysFileUploadVO();
|
||||
String bucketName = this.ossProperties.getBucketName();
|
||||
String fileNameUrl = "/" + bucketName + "/" + fileUrl;
|
||||
result.setBucketName(bucketName);
|
||||
result.setFileNameUrl(fileNameUrl);
|
||||
result.setUrl(String.format("/admin/api/v1/sysfile/%s/%s", bucketName, fileUrl));
|
||||
result.setOriginalFileName(file.getOriginalFilename());
|
||||
|
||||
try {
|
||||
this.minioTemplate.putObject(bucketName, fileUrl, file.getInputStream());
|
||||
this.fileLog(file, fileUrl);
|
||||
return result;
|
||||
} catch (Exception var11) {
|
||||
log.error("***上传失败", var11);
|
||||
throw new ServiceException("上传失败!!!");
|
||||
}
|
||||
}
|
||||
|
||||
private void fileLog(MultipartFile file, String fileName) {
|
||||
SysFile sysFile = new SysFile();
|
||||
String original = file.getOriginalFilename();
|
||||
sysFile.setFileName(fileName);
|
||||
sysFile.setOriginal(original);
|
||||
sysFile.setFileSize(file.getSize());
|
||||
sysFile.setType(FileUtil.extName(original));
|
||||
sysFile.setBucketName(this.ossProperties.getBucketName());
|
||||
sysFile.setCreateUser("");
|
||||
this.save(sysFile);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
package com.bonus.core.common.sysfile.vo;
|
||||
|
||||
import com.bonus.core.common.utils.SysUtil;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
@ApiModel("文件上传")
|
||||
public class SysFileUploadVO {
|
||||
@ApiModelProperty("存储桶名称")
|
||||
private String bucketName;
|
||||
@ApiModelProperty("文件下载路径")
|
||||
private String fileNameUrl;
|
||||
@ApiModelProperty("请求路径")
|
||||
private String url;
|
||||
@ApiModelProperty("原始文件名")
|
||||
private String originalFileName;
|
||||
|
||||
public String getFileNameUrl() {
|
||||
return SysUtil.getCutFileUrl(this.fileNameUrl);
|
||||
}
|
||||
|
||||
public String getBucketName() {
|
||||
return this.bucketName;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return this.url;
|
||||
}
|
||||
|
||||
public String getOriginalFileName() {
|
||||
return this.originalFileName;
|
||||
}
|
||||
|
||||
public void setBucketName(final String bucketName) {
|
||||
this.bucketName = bucketName;
|
||||
}
|
||||
|
||||
public void setFileNameUrl(final String fileNameUrl) {
|
||||
this.fileNameUrl = fileNameUrl;
|
||||
}
|
||||
|
||||
public void setUrl(final String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public void setOriginalFileName(final String originalFileName) {
|
||||
this.originalFileName = originalFileName;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.bonus.core.common.sysfile.mapper.SysFileMapper">
|
||||
</mapper>
|
||||
Reference in New Issue