初始话
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
package org.jiayunet.server;
|
||||
|
||||
import com.aliyun.oss.HttpMethod;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
import org.jiayunet.constant.OssBucketEnum;
|
||||
import org.jiayunet.constant.OssPathEnum;
|
||||
import org.jiayunet.exception.BusinessException;
|
||||
import org.jiayunet.exception.BusinessExpCodeEnum;
|
||||
import org.jiayunet.mapper.OssFileMapper;
|
||||
import org.jiayunet.oss.AliOssAbility;
|
||||
import org.jiayunet.pojo.po.OssFile;
|
||||
import org.jiayunet.pojo.vo.OssUrlVo;
|
||||
import org.jiayunet.tool.UserSecurityTool;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.time.Instant;
|
||||
|
||||
/**
|
||||
* Oss 服务类
|
||||
*
|
||||
* @author zk
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
public class OssServer {
|
||||
|
||||
|
||||
private AliOssAbility aliOssAbility;
|
||||
private OssFileMapper ossFileMapper;
|
||||
|
||||
/**
|
||||
* 申请上传文件签名授权地址
|
||||
*
|
||||
* @return 地址
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public OssUrlVo requestUploadUrl(String fileName, OssPathEnum pathEnum) {
|
||||
Assert.notNull(pathEnum, " 上传路径不能为空");
|
||||
Assert.hasText(fileName, "文件不能为空");
|
||||
Assert.isTrue(fileName.lastIndexOf(".") >= 0, "文件名必须包含类型");
|
||||
|
||||
OssBucketEnum jiaYuPet = OssBucketEnum.HuiDongNi;
|
||||
Long userId = UserSecurityTool.getUserId();
|
||||
String type = fileName.substring(fileName.lastIndexOf(".") + 1);
|
||||
String path = pathEnum.getPath(fileName);
|
||||
|
||||
|
||||
OssUrlVo ossUrlVo = new OssUrlVo();
|
||||
|
||||
try {
|
||||
//保存上传信息
|
||||
ossFileMapper.insert(new OssFile(null, jiaYuPet.getBucketName(), type, path, fileName, userId, 0, Instant.now(), null));
|
||||
|
||||
//获取上传Url
|
||||
String uploadUrl = aliOssAbility.signatureUrl(jiaYuPet.getEndpoint(), jiaYuPet.getBucketName(), path, 60, HttpMethod.PUT);
|
||||
|
||||
//组装下载地址
|
||||
String downloadUrl = jiaYuPet.getDomain() + "/" + path;
|
||||
|
||||
ossUrlVo.setUploadUrl(uploadUrl);
|
||||
ossUrlVo.setDownloadUrl(downloadUrl);
|
||||
|
||||
return ossUrlVo;
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException(BusinessExpCodeEnum.UNKNOWN_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
public OssUrlVo simpleUpload(String fileName, OssPathEnum pathEnum, InputStream inputStream) {
|
||||
Assert.notNull(pathEnum, " 上传路径不能为空");
|
||||
Assert.hasText(fileName, "文件不能为空");
|
||||
Assert.isTrue(fileName.lastIndexOf(".") >= 0, "文件名必须包含类型");
|
||||
|
||||
OssBucketEnum jiaYuPet = OssBucketEnum.HuiDongNi;
|
||||
Long userId = UserSecurityTool.getUserId();
|
||||
String type = fileName.substring(fileName.lastIndexOf(".") + 1);
|
||||
String path = pathEnum.getPath(fileName);
|
||||
|
||||
|
||||
OssUrlVo ossUrlVo = new OssUrlVo();
|
||||
|
||||
try {
|
||||
//保存上传信息
|
||||
ossFileMapper.insert(new OssFile(null, jiaYuPet.getBucketName(), type, path, fileName, userId, 0, Instant.now(), null));
|
||||
|
||||
aliOssAbility.simpleUpload(jiaYuPet.getEndpoint(), jiaYuPet.getBucketName(), path, inputStream);
|
||||
inputStream.close();
|
||||
|
||||
|
||||
//组装下载地址
|
||||
String downloadUrl = jiaYuPet.getDomain() + "/" + path;
|
||||
|
||||
ossUrlVo.setUploadUrl(downloadUrl);
|
||||
ossUrlVo.setDownloadUrl(downloadUrl);
|
||||
return ossUrlVo;
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException(BusinessExpCodeEnum.UNKNOWN_ERROR);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user