oss上传,手动结束订单待完善,数据权限优化调整

This commit is contained in:
19173159168
2025-08-10 12:41:27 +08:00
parent c463bdabb3
commit 48f0589e1a
25 changed files with 389 additions and 81 deletions

View File

@ -126,6 +126,12 @@
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<!-- excel工具 -->
<dependency>
<groupId>org.apache.poi</groupId>

View File

@ -0,0 +1,56 @@
package com.ruoyi.common.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class OssConfig {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
private String domain;
// Getters and Setters
public String getEndpoint() {
return endpoint;
}
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
public String getAccessKeyId() {
return accessKeyId;
}
public void setAccessKeyId(String accessKeyId) {
this.accessKeyId = accessKeyId;
}
public String getAccessKeySecret() {
return accessKeySecret;
}
public void setAccessKeySecret(String accessKeySecret) {
this.accessKeySecret = accessKeySecret;
}
public String getBucketName() {
return bucketName;
}
public void setBucketName(String bucketName) {
this.bucketName = bucketName;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
}

View File

@ -0,0 +1,76 @@
package com.ruoyi.common.utils.oss;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import com.ruoyi.common.config.OssConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
@Component
public class OssService {
@Autowired
private OssConfig ossConfig;
/**
* 上传文件到 OSS
* @param file 文件
* @param folder 文件夹路径,例如 "images/"
* @return 文件访问 URL
*/
public String uploadFile(MultipartFile file, String folder) throws IOException {
// 创建 OSSClient 实例
OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());
try {
// 获取原始文件名
String originalFilename = file.getOriginalFilename();
// 生成唯一文件名
String fileName = UUID.randomUUID().toString().replaceAll("-", "") +
(originalFilename != null ? originalFilename.substring(originalFilename.lastIndexOf(".")) : "");
// 完整路径
String objectName = folder + fileName;
// 获取文件输入流
InputStream inputStream = file.getInputStream();
// 创建 PutObjectRequest 对象
PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfig.getBucketName(), objectName, inputStream);
// 上传文件
ossClient.putObject(putObjectRequest);
// 返回文件访问 URL
return "https://" + ossConfig.getDomain() + "/" + objectName;
} catch (com.aliyun.oss.OSSException e) {
if ("AccessDenied".equals(e.getErrorCode())) {
throw new IOException("OSS权限不足请联系管理员配置权限。错误代码: " + e.getErrorCode(), e);
}
throw new IOException("OSS上传失败: " + e.getMessage(), e);
} catch (Exception e) {
throw new IOException("OSS上传失败: " + e.getMessage(), e);
} finally {
// 关闭 OSSClient
if (ossClient != null) {
ossClient.shutdown();
}
}
}
/**
* 上传图片文件到 OSS
* @param file 图片文件
* @return 图片访问 URL
*/
public String uploadImage(MultipartFile file) throws IOException {
return uploadFile(file, "images/");
}
}