Browse Source

天翼云,使用minio访问测试

nantong
时子升 2 months ago
parent
commit
c2f24932bc
  1. 79
      dk-modules/sample/src/main/java/org/dromara/sample/storage/config/OssTianyiConfig.java
  2. 58
      dk-modules/sample/src/main/java/org/dromara/sample/storage/controller/OssTianyiController.java
  3. 211
      dk-modules/sample/src/main/java/org/dromara/sample/storage/domain/SysUploadFile.java
  4. 174
      dk-modules/sample/src/main/java/org/dromara/sample/storage/util/OssTianyiClientUtils.java

79
dk-modules/sample/src/main/java/org/dromara/sample/storage/config/OssTianyiConfig.java

@ -0,0 +1,79 @@
package org.dromara.sample.storage.config;
import io.minio.MinioClient;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Minio 配置信息
*
* @author ruoyi
*/
@Configuration
@ConfigurationProperties(prefix = "osstianyi")
public class OssTianyiConfig
{
private String endPoint;
private String accessKey;
private String secretKey;
private String bucketName;
public String getEndPoint() {
return endPoint;
}
public void setEndPoint(String endPoint) {
this.endPoint = endPoint;
}
public String getAccessKey()
{
return accessKey;
}
public void setAccessKey(String accessKey)
{
this.accessKey = accessKey;
}
public String getSecretKey()
{
return secretKey;
}
public void setSecretKey(String secretKey)
{
this.secretKey = secretKey;
}
public String getBucketName()
{
return bucketName;
}
public void setBucketName(String bucketName)
{
this.bucketName = bucketName;
}
@Override
public String toString() {
return "OssTianyiConfig{" +
"endPoint='" + endPoint + '\'' +
", accessKey='" + accessKey + '\'' +
", secretKey='" + secretKey + '\'' +
", bucketName='" + bucketName + '\'' +
'}';
}
@Bean
public MinioClient getMinioClient()
{
// System.out.println("OssTianyiConfig");
// System.out.println("OssTianyiConfig" + endPoint);
System.out.println(toString());
return MinioClient.builder().endpoint(endPoint).credentials(accessKey, secretKey).build();
}
}

58
dk-modules/sample/src/main/java/org/dromara/sample/storage/controller/OssTianyiController.java

@ -0,0 +1,58 @@
package org.dromara.sample.storage.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.sample.storage.domain.SysUploadFile;
import org.dromara.sample.storage.util.OssTianyiClientUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
/**
* 系统上传文件Controller
*
* @author tom
* @date 2024-12-21
*/
@RestController
@RequestMapping("/ossTianyi")
public class OssTianyiController extends BaseController
{
@Autowired
private OssTianyiClientUtils ossTianyiClientUtils;
/**
* 查询系统上传文件列表 实际是上传接口
*/
@SaCheckPermission("file:sysUploadFile:list")
@GetMapping("/list")
public TableDataInfo list(SysUploadFile sysUploadFile)
{
String localFilePath = "D:\\123pan\\page.html";
try{
ossTianyiClientUtils.uploadFileTest("page.html","dev/temp",localFilePath);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
@GetMapping("/upload")
public R<HashMap<String, Object>> upload(@RequestPart("file") MultipartFile file) {
try {
ossTianyiClientUtils.uploadFile("page.html", "dev/temp", file);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

211
dk-modules/sample/src/main/java/org/dromara/sample/storage/domain/SysUploadFile.java

@ -0,0 +1,211 @@
package org.dromara.sample.storage.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.dromara.common.mybatis.core.domain.BaseEntity;
/**
* 系统上传文件对象 sys_upload_file
*
* @author tom
* @date 2024-12-21
*/
@TableName("sys_upload_file")
public class SysUploadFile extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** ID */
@TableId(value="id",type = IdType.AUTO)
private Long id;
/** 删除标记 */
@TableField("del_flag")
private Long delFlag;
/** 文件名称 */
@TableField("name")
private String name;
/** 上传时文件名 */
@TableField("file_name")
private String fileName;
/** 物理路径 */
@TableField("path")
private String path;
/** 文件URL */
@TableField("url")
private String url;
/** 文件扩展名 */
@TableField("extend")
private String extend;
/** 文件类型 */
@TableField("dict_file_type")
private Long dictFileType;
/** 关联对象ID */
@TableField("object_id")
private Long objectId;
/** 关联对象类型 */
@TableField("object_type")
private String objectType;
/** 关联对象ID */
@TableField("object_link_id")
private String objectLinkId;
/** 排序 */
@TableField("sort")
private Long sort;
/** 标签 */
@TableField("tags")
private String tags;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setDelFlag(Long delFlag)
{
this.delFlag = delFlag;
}
public Long getDelFlag()
{
return delFlag;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public String getFileName()
{
return fileName;
}
public void setPath(String path)
{
this.path = path;
}
public String getPath()
{
return path;
}
public void setUrl(String url)
{
this.url = url;
}
public String getUrl()
{
return url;
}
public void setExtend(String extend)
{
this.extend = extend;
}
public String getExtend()
{
return extend;
}
public void setDictFileType(Long dictFileType)
{
this.dictFileType = dictFileType;
}
public Long getDictFileType()
{
return dictFileType;
}
public void setObjectId(Long objectId)
{
this.objectId = objectId;
}
public Long getObjectId()
{
return objectId;
}
public void setObjectType(String objectType)
{
this.objectType = objectType;
}
public String getObjectType()
{
return objectType;
}
public String getObjectLinkId() {
return objectLinkId;
}
public void setObjectLinkId(String objectLinkId) {
this.objectLinkId = objectLinkId;
}
public void setSort(Long sort)
{
this.sort = sort;
}
public Long getSort()
{
return sort;
}
public String getTags() {
return tags;
}
public void setTags(String tags) {
this.tags = tags;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("delFlag", getDelFlag())
.append("name", getName())
.append("fileName", getFileName())
.append("path", getPath())
.append("url", getUrl())
.append("extend", getExtend())
.append("dictFileType", getDictFileType())
.append("objectId", getObjectId())
.append("objectType", getObjectType())
.append("sort", getSort())
.toString();
}
}

174
dk-modules/sample/src/main/java/org/dromara/sample/storage/util/OssTianyiClientUtils.java

@ -0,0 +1,174 @@
package org.dromara.sample.storage.util;
import cn.hutool.core.io.FileUtil;
import io.minio.*;
import io.minio.errors.*;
import io.minio.messages.Item;
import org.dromara.sample.storage.config.OssTianyiConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
@Component
public class OssTianyiClientUtils {
private static MinioClient minioClient;
// private static String endPoint = "https://jiangsu-10.zos.ctyun.cn"; //地域节点,可访问
// // private static String endPoint = "https://dk-ty-oss-bucket.jiangsu-10.zos.ctyun.cn"; //说是桶的域名地址,支持公网访问ZOS,实测报错
// private static String minioAccessKey = "22e3f37368a242b38f4f25d98c9baf1f";
// private static String minioSecretKey = "0d858850666248e59830d9a596847062";
// private static String bucketName = "dk-ty-oss-bucket";
// private String bucketName = "dkossbucket";
private String objectName = "page.html";
//注意,天翼云里默认路径就是文件名,不需要在前面加根路径/
private String filePath = "dev/temp/";
private String fileDir = "dev";
@Autowired
OssTianyiConfig ossTianyiConfig;
@Autowired
public OssTianyiClientUtils(OssTianyiConfig ossTianyiConfig) {
this.ossTianyiConfig = ossTianyiConfig;
init();
}
private void init() {
this.minioClient = MinioClient.builder()
.endpoint(ossTianyiConfig.getEndPoint())
.credentials(ossTianyiConfig.getAccessKey(), ossTianyiConfig.getSecretKey())
.build();
}
/**
* 天翼云OSS初始化采用S3 Compatible Storage
*/
// public void tianyiOssInit() {
// minioClient = MinioClient.builder()
// .endpoint(ossTianyiConfig.getEndPoint())
// .credentials(ossTianyiConfig.getAccessKey(), ossTianyiConfig.getSecretKey())
// .build();
// }
/**
* 文件上传 (固定)
*/
public void uploadFileTest(String objectName, String filePath, String localFilePath) throws Exception {
File file = new File(localFilePath);
BufferedInputStream inputStream = FileUtil.getInputStream(file);
String contentType = Files.probeContentType(file.toPath());
if (contentType == null) {
contentType = "application/octet-stream";
}
PutObjectArgs args = PutObjectArgs.builder()
.bucket(ossTianyiConfig.getBucketName())
.object(filePath + objectName)
.stream(inputStream, FileUtil.size(file), -1)
.contentType(contentType)
.build();
minioClient.putObject(args);
}
public void uploadFile(String s, String s1, MultipartFile file) {
try {
PutObjectArgs args = PutObjectArgs.builder()
.bucket(ossTianyiConfig.getBucketName())
.object( file.getName())
.stream(file.getInputStream(), file.getSize(), -1)
.contentType(file.getContentType())
.build();
minioClient.putObject(args);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 文件删除
*/
public void deleteFile(String bucketName, String objectName) throws Exception {
minioClient.removeObject(
RemoveObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build());
}
/**
* 文件下载
*/
public void downloadFile(String bucketName, String objectName, String downloadPath) throws Exception {
InputStream inputStream = minioClient.getObject(
GetObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build()
);
FileUtil.writeFromStream(inputStream, new File(downloadPath));
}
/**
* 文件列表
* @param bucketName
* @param prefix
*/
public void listFiles(String bucketName, String prefix) {
Iterable<Result<Item>> results = minioClient.listObjects(
ListObjectsArgs.builder()
.bucket(bucketName)
.prefix(prefix)
.recursive(true)
.build()
);
try {
for (Result<Item> result : results) {
try {
// System.out.println("文件名:" + result.get().objectName()); // 获取对象名称(文件路径)
System.out.println(result.get().objectName()); // 获取对象名称(文件路径)
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
System.err.println("文件读取异常: " + e.getMessage());
}
}
// public void updateFile(String bucketName, String objectName, String filePath, String localFilePath) throws Exception {
// uploadFile(bucketName, objectName, filePath, localFilePath);
// }
// public static void main(String[] args) throws Exception {
// String localFilePath = "D:\\123pan\\page.html";
//
// tianyiOssInit("", "", "");
// uploadFile(bucketName, objectName, filePath, localFilePath);//正常
//// deleteFile(bucketName, filePath + objectName);//正常
//// listFiles(bucketName, fileDir + "/"); // 正常
//
//// downloadFile(bucketName, filePath + objectName, "D:\\123pan\\downloaded_page.html"); //正常
//
// }
}
Loading…
Cancel
Save