oss上传,手动结束订单待完善,数据权限优化调整
This commit is contained in:
@ -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>
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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/");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user