记得上下班打卡 | git大法好,push需谨慎

Commit ea655e42 authored by jiangxiulong's avatar jiangxiulong

上传增加记录

parent f9261b37
......@@ -20,6 +20,8 @@ import java.io.Serializable;
public class UploadVo implements Serializable {
@ApiModelProperty(value = "上传后的地址")
private String uploadPath;
private String ossPath;
private String contentType;
private Integer size;
}
......@@ -2,10 +2,9 @@ package com.liquidnet.commons.lang.util;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.File;
import java.io.*;
import java.math.BigInteger;
import java.security.MessageDigest;
/**
* aloss 上传MultipartFile to File
......@@ -56,8 +55,40 @@ public class FilesUtils {
*/
public static void delteTempFile(File file) {
if (file != null) {
File del = new File(file.toURI());
del.delete();
file.delete();
}
}
/**
* 获取文件的md5值
* @param file 文件
* @return 返回文件的md5值字符串
*/
public static String getFileMD5(File file) {
if (!file.isFile()) {
return null;
}
MessageDigest digest = null;
FileInputStream in = null;
byte buffer[] = new byte[8192];
int len;
try {
digest = MessageDigest.getInstance("MD5");
in = new FileInputStream(file);
while ((len = in.read(buffer)) != -1) {
digest.update(buffer, 0, len);
}
BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
......
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
* OSS上传 模型
* </p>
*
* @author jiangxiulong
* @since 2021-07-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class PlatformOssFiles implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
private String ossFilesId;
private String fileName;
private String ossPath;
private String contentType;
private Integer size;
private String md5str;
private String uploaderUid;
private String uploaderName;
/**
* 创建时间
*/
private String createdAt;
/**
* 修改时间
*/
private String updatedAt;
}
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.entity.PlatformOssFiles;
/**
* <p>
* OSS上传 Mapper 接口 处理数据库
* </p>
*
* @author jiangxiulong
* @since 2021-07-12
*/
public interface PlatformOssFilesMapper extends BaseMapper<PlatformOssFiles> {
}
......@@ -960,3 +960,23 @@ CREATE TABLE `kylin_zhengzai_app_versions`
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COMMENT '正在现场app版本控制';
drop TABLE if exists `platform_oss_files`;
create table platform_oss_files
(
`mid` int(11) unsigned NOT NULL AUTO_INCREMENT,
`oss_files_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'oss_files_id',
`file_name` varchar(255) NOT NULL DEFAULT '' COMMENT '源文件名称',
`content_type` varchar(255) NOT NULL DEFAULT '' COMMENT '文件类型',
`size` int NOT NULL DEFAULT 0 COMMENT '文件大小',
`md5str` varchar(255) NOT NULL DEFAULT '' COMMENT 'md5值判断文件是否相同',
`oss_path` varchar(255) NOT NULL DEFAULT '' COMMENT '文件地址(阿里oss)',
`uploader_uid` varchar(255) NOT NULL DEFAULT '' COMMENT '上传人id',
`uploader_name` varchar(255) NOT NULL DEFAULT '' COMMENT '上传人姓名',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
KEY `kylin_oss_files_id_index` (`oss_files_id`),
PRIMARY KEY (`mid`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COMMENT '阿里云OSS上传记录';
......@@ -3,20 +3,26 @@ package com.liquidnet.service.platform.controller.basicServices;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.FilesUtils;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.kylin.dto.vo.basicServices.UploadVo;
import com.liquidnet.service.kylin.entity.PlatformOssFiles;
import com.liquidnet.service.kylin.mapper.PlatformOssFilesMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.sql.Wrapper;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.UUID;
/**
......@@ -40,6 +46,9 @@ public class AlOssController {
@Value("${liquidnet.al-oss.accessKeySecret}")
private String accessKeySecret;
@Autowired
private PlatformOssFilesMapper platformOssFilesMapper;
@PostMapping("/upload")
@ApiOperation("阿里云上传")
@ApiImplicitParams({
......@@ -57,6 +66,17 @@ public class AlOssController {
return null;
}
// file md5
String fileMD5 = FilesUtils.getFileMD5(file);
PlatformOssFiles platformOssFiles = platformOssFilesMapper.selectOne(Wrappers.lambdaQuery(PlatformOssFiles.class).eq(PlatformOssFiles::getMd5str, fileMD5));
if (null != platformOssFiles) {
UploadVo uploadVo = new UploadVo();
uploadVo.setOssPath(platformOssFiles.getOssPath());
uploadVo.setSize(platformOssFiles.getSize());
uploadVo.setContentType(platformOssFiles.getContentType());
return uploadVo;
}
String filename = files.getResource().getFilename();// time.jpeg
//这里文件名用了uuid 防止重复,可以根据自己的需要来写
String uploadName = UUID.randomUUID() + filename.substring(filename.lastIndexOf("."));// 078a77e0-cf80-481b-824c-5935247cff15.jpeg
......@@ -70,10 +90,25 @@ public class AlOssController {
ossClient.putObject(putObjectRequest);
ossClient.shutdown();
file.delete();
FilesUtils.delteTempFile(file); // 删除临时文件
// 入库
PlatformOssFiles platformOssFilesDate = new PlatformOssFiles();
String ossFilesId = IDGenerator.nextSnowId();
platformOssFilesDate.setOssFilesId(ossFilesId);
platformOssFilesDate.setOssPath(uploadpath);
platformOssFilesDate.setFileName(filename);
platformOssFilesDate.setContentType(files.getContentType());
platformOssFilesDate.setSize((int) files.getSize());
platformOssFilesDate.setMd5str(fileMD5);
platformOssFilesDate.setCreatedAt(DateUtil.getNowTime());
platformOssFilesMapper.insert(platformOssFilesDate);
// 返回值
UploadVo uploadVo = new UploadVo();
uploadVo.setUploadPath(uploadpath);
uploadVo.setOssPath(platformOssFilesDate.getOssPath());
uploadVo.setSize(platformOssFilesDate.getSize());
uploadVo.setContentType(platformOssFilesDate.getContentType());
return uploadVo;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment