![JAR search and dependency download from the Maven repository](/logo.png)
love.keeping.starter.web.components.upload.handler.impl.OssUploadHandler Maven / Gradle / Ivy
The newest version!
package love.keeping.starter.web.components.upload.handler.impl;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import love.keeping.starter.common.constants.StringPool;
import love.keeping.starter.common.utils.Assert;
import love.keeping.starter.common.utils.StringUtil;
import love.keeping.starter.web.components.upload.handler.UploadHandler;
import love.keeping.starter.web.service.SysParameterService;
import love.keeping.starter.web.utils.JsonUtil;
import java.io.InputStream;
import java.util.List;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
public class OssUploadHandler implements UploadHandler {
@Autowired
private SysParameterService sysParameterService;
@Override
public String getType() {
return "OSS";
}
@Override
public String upload(InputStream is, List locations, String fileName) {
String configStr = sysParameterService.findRequiredByKey("upload.oss.config");
OssConfig config = JsonUtil.parseObject(configStr, OssConfig.class);
Assert.notBlank(config.getEndpoint());
Assert.notBlank(config.getBucketName());
Assert.notBlank(config.getAccessKeyId());
Assert.notBlank(config.getAccessKeySecret());
OSS ossClient = new OSSClientBuilder().build(
StringUtil.isBlank(config.getInternalEndPoint()) ? config.getEndpoint()
: config.getInternalEndPoint(), config.getAccessKeyId(),
config.getAccessKeySecret());
String objectName = StringUtil.join("/", locations) + fileName;
try {
// 这里不判断桶是否存在,通过控台创建
ossClient.putObject(config.getBucketName(), objectName, is);
if (StringUtil.isNotBlank(config.getCustomUrl())) {
return config.getCustomUrl() + (config.getCustomUrl().endsWith("/") ? StringPool.EMPTY_STR
: "/") + objectName;
}
return "https://" + config.getBucketName() + "." + config.getEndpoint() + "/" + objectName;
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
@Data
public static class OssConfig {
private String customUrl;
private String endpoint;
private String internalEndPoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy