文字转语音

This commit is contained in:
spllzh
2025-10-04 19:52:06 +08:00
parent 24c00c22ab
commit 06730b656e
51 changed files with 5157 additions and 8 deletions

View File

@@ -0,0 +1,304 @@
package com.rj.service;
import com.rj.config.MinIOConfig;
import com.rj.utils.MinIOUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.List;
/**
* MinIO 服务类
* 封装MinIO相关业务逻辑
*
* @author rj
* @date 2025-10-02
*/
@Slf4j
@Service
public class MinIOService {
@Autowired
private MinIOUtil minioUtil;
@Autowired
private MinIOConfig minioConfig;
/**
* 上传文件到默认存储桶
*
* @param file 文件
* @return 文件访问URL
*/
public String uploadFile(MultipartFile file) {
String objectName = minioUtil.uploadFile(file, minioConfig.getBucketName());
return getFileUrl(objectName);
}
/**
* 上传文件到指定存储桶
*
* @param file 文件
* @param bucketName 存储桶名称
* @return 文件访问URL
*/
public String uploadFile(MultipartFile file, String bucketName) {
String objectName = minioUtil.uploadFile(file, bucketName);
return getFileUrl(bucketName, objectName);
}
/**
* 上传字节数组到默认存储桶
*
* @param data 字节数组
* @param fileName 文件名
* @param contentType 内容类型
* @return 文件访问URL
*/
public String uploadFile(byte[] data, String fileName, String contentType) {
String objectName = minioUtil.uploadFile(data, fileName, contentType);
return getFileUrl(objectName);
}
/**
* 上传字节数组到指定存储桶
*
* @param data 字节数组
* @param bucketName 存储桶名称
* @param fileName 文件名
* @param contentType 内容类型
* @return 文件访问URL
*/
public String uploadFile(byte[] data, String bucketName, String fileName, String contentType) {
String objectName = minioUtil.uploadFile(data, fileName, contentType);
return getFileUrl(objectName);
}
/**
* 上传文件并指定文件名
*
* @param file 文件
* @param fileName 文件名
* @return 文件访问URL
*/
public String uploadFileWithName(MultipartFile file, String fileName) {
String objectName = minioUtil.uploadFile(file, minioConfig.getBucketName(), fileName);
return getFileUrl(objectName);
}
/**
* 上传文件流
*
* @param inputStream 文件流
* @param fileName 文件名
* @param contentType 内容类型
* @return 文件访问URL
*/
public String uploadFile(InputStream inputStream, String fileName, String contentType) {
boolean success = minioUtil.uploadFile(inputStream, minioConfig.getBucketName(), fileName, contentType);
if (success) {
return getFileUrl(fileName);
}
throw new RuntimeException("文件上传失败");
}
/**
* 下载文件
*
* @param fileName 文件名
* @return 文件流
*/
public InputStream downloadFile(String fileName) {
return minioUtil.downloadFile(minioConfig.getBucketName(), fileName);
}
/**
* 下载文件
*
* @param bucketName 存储桶名称
* @param fileName 文件名
* @return 文件流
*/
public InputStream downloadFile(String bucketName, String fileName) {
return minioUtil.downloadFile(bucketName, fileName);
}
/**
* 删除文件
*
* @param fileName 文件名
* @return 是否删除成功
*/
public boolean deleteFile(String fileName) {
return minioUtil.removeFile(minioConfig.getBucketName(), fileName);
}
/**
* 删除文件
*
* @param bucketName 存储桶名称
* @param fileName 文件名
* @return 是否删除成功
*/
public boolean deleteFile(String bucketName, String fileName) {
return minioUtil.removeFile(bucketName, fileName);
}
/**
* 获取文件列表
*
* @return 文件列表
*/
public List<String> listFiles() {
return minioUtil.listFiles(minioConfig.getBucketName());
}
/**
* 获取文件列表
*
* @param bucketName 存储桶名称
* @return 文件列表
*/
public List<String> listFiles(String bucketName) {
return minioUtil.listFiles(bucketName);
}
/**
* 获取文件详细信息列表
*
* @return 文件详细信息列表
*/
public List<MinIOUtil.FileInfo> listFileDetails() {
return minioUtil.listFileDetails(minioConfig.getBucketName());
}
/**
* 获取文件详细信息列表
*
* @param bucketName 存储桶名称
* @return 文件详细信息列表
*/
public List<MinIOUtil.FileInfo> listFileDetails(String bucketName) {
return minioUtil.listFileDetails(bucketName);
}
/**
* 获取文件预签名URL
*
* @param fileName 文件名
* @param expires 过期时间(秒)
* @return 预签名URL
*/
public String getPresignedUrl(String fileName, int expires) {
return minioUtil.getPresignedObjectUrl(minioConfig.getBucketName(), fileName, expires);
}
/**
* 获取文件预签名URL默认7天过期
*
* @param fileName 文件名
* @return 预签名URL
*/
public String getPresignedUrl(String fileName) {
return minioUtil.getPresignedObjectUrl(minioConfig.getBucketName(), fileName);
}
/**
* 复制文件
*
* @param sourceFileName 源文件名
* @param targetFileName 目标文件名
* @return 是否复制成功
*/
public boolean copyFile(String sourceFileName, String targetFileName) {
return minioUtil.copyFile(minioConfig.getBucketName(), sourceFileName,
minioConfig.getBucketName(), targetFileName);
}
/**
* 复制文件到其他存储桶
*
* @param sourceFileName 源文件名
* @param targetBucketName 目标存储桶名称
* @param targetFileName 目标文件名
* @return 是否复制成功
*/
public boolean copyFile(String sourceFileName, String targetBucketName, String targetFileName) {
return minioUtil.copyFile(minioConfig.getBucketName(), sourceFileName,
targetBucketName, targetFileName);
}
/**
* 检查文件是否存在
*
* @param fileName 文件名
* @return 是否存在
*/
public boolean fileExists(String fileName) {
return minioUtil.getFileInfo(minioConfig.getBucketName(), fileName) != null;
}
/**
* 检查文件是否存在
*
* @param bucketName 存储桶名称
* @param fileName 文件名
* @return 是否存在
*/
public boolean fileExists(String bucketName, String fileName) {
return minioUtil.getFileInfo(bucketName, fileName) != null;
}
/**
* 获取文件访问URL
*
* @param fileName 文件名
* @return 文件访问URL
*/
public String getFileUrl(String fileName) {
return minioConfig.getFileUrlPrefix() + fileName;
}
/**
* 获取文件访问URL
*
* @param bucketName 存储桶名称
* @param fileName 文件名
* @return 文件访问URL
*/
public String getFileUrl(String bucketName, String fileName) {
return minioConfig.getEndpoint() + "/" + bucketName + "/" + fileName;
}
/**
* 创建存储桶
*
* @param bucketName 存储桶名称
* @return 是否创建成功
*/
public boolean createBucket(String bucketName) {
return minioUtil.createBucket(bucketName);
}
/**
* 删除存储桶
*
* @param bucketName 存储桶名称
* @return 是否删除成功
*/
public boolean deleteBucket(String bucketName) {
return minioUtil.removeBucket(bucketName);
}
/**
* 获取所有存储桶
*
* @return 存储桶列表
*/
public List<String> getAllBuckets() {
return minioUtil.getAllBuckets();
}
}