JAVA-OSS内网外网转换工具类

oss路径是一个比较敏感的url路径,有的时候需要用内网、有的时候需要外网,有的时候需要/有的时候不需要/,这个工具类就是帮忙干这事儿的。

public class OSSUrlUtil {

    public static final String[] OSS_DOMAINS = new String[]{
        "https://biz.s3.url.com/",
        "http://biz.s3.url.com/",
        "https://biz.s3-internal.url.com/",
        "http://biz.s3-internal.url.com/",
        "http://s3.url.com/biz/",
        "https://s3.url.com/biz/",
        "http://s3-internal.url.com/biz/",
        "https://s3-internal.url.com/biz/"
    };

    /**
     * 去除掉oss的域名前缀
     * @param url
     * @return
     */
    public static String delOssDomainAndSign(String url) {
        if (StringUtils.isBlank(url)) {
            return null;
        }
        for (String domain: SystemConstant.OSS_DOMAINS) {
            url = url.replace(domain, "");
        }
        return StringUtils.substringBefore(url, SymbolConstant.QUESTION);
    }


    /**
     * 获取完整的oss的url访问路径 外网
     * @param url
     * @return
     */
    public static String getOuterOssDomainUrl(String url) {
        if (StringUtils.isBlank(url)) {
            return null;
        }
        for (String domain: SystemConstant.OSS_DOMAINS) {
            url = url.replace(domain, "");
        }
        return SystemConstant.OSS_OUTER_PATH_HTTPS + url;
    }

    /**
     * 获取完整的oss的url访问路径 内网
     * @param url
     * @return
     */
    public static String getInternalOssDomainUrl(String url) {
        if (StringUtils.isBlank(url)) {
            return null;
        }
        for (String domain: SystemConstant.OSS_DOMAINS) {
            url = url.replace(domain, "");
        }
        return SystemConstant.OSS_INTERNAL_PATH_HTTPS + url;
    }

    /**
     * 判断是否是OSS路径
     * @param url
     * @return
     */
    public static boolean isOssDomain(String url) {
        if (StringUtils.isBlank(url)) {
            return false;
        }
        for (String domain: SystemConstant.OSS_DOMAINS) {
            if (url.contains(domain)) {
                return true;
            }
        }
        return false;
    }
}

### Java OSS 工具类示例 为了在 Java 应用程序中集成阿里云的对象存储服务 (OSS),可以创建一个专门用于处理文件上传操作的工具类。以下是基于提供的依赖项构建的一个简单实用的工具类。 #### 添加 Maven 依赖 首先,在项目的 `pom.xml` 文件里加入如下所示的 Aliyun SDK 的依赖声明[^2]: ```xml <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.15.0</version> </dependency> ``` #### 创建 OSSUtil 类 接着定义名为 `OSSUtil.java` 的工具类来封装常见的 OSS 操作方法,比如上传本地文件到指定桶内路径下: ```java import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; public class OSSUtil { private static final String ENDPOINT = "your-endpoint"; private static final String ACCESS_KEY_ID = "your-access-key-id"; private static final String ACCESS_KEY_SECRET = "your-access-key-secret"; /** * 将给定路径下的文件上传至目标Bucket中的特定位置. * * @param localFilePath 待上传文件所在绝对路径 * @param bucketName 存储空间名称 * @param objectName 对象键名(即远程服务器上的保存路径) */ public void uploadFile(String localFilePath, String bucketName, String objectName) { try (OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET)) { // Upload the file to specified location within Bucket ossClient.putObject(bucketName, objectName, new java.io.File(localFilePath)); System.out.println("Upload completed."); } catch (Exception e) { throw new RuntimeException(e); } } } ``` 此代码片段展示了如何通过调用 `putObject()` 方法完成文件传输过程,并且包含了必要的异常捕获逻辑以确保当遇到错误时能够及时反馈给调用者[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值