xin
2025-07-10 09ac251a089f5bb79d59a12bf2f932dda12c4ca2
oying-tools/src/main/java/com/oying/utils/ObsUtils.java
@@ -36,9 +36,9 @@
     * @return PutObjectResult
     */
    public static PutObjectResult putObject(ObsProperties properties, File file, String objectKey, AccessControlList acl) {
        // 创建ObsClient实例
        ObsClient obsClient = getObsClient(properties);
        try {
            // 创建ObsClient实例
            ObsClient obsClient = getObsClient(properties);
            PutObjectRequest request = new PutObjectRequest();
            request.setBucketName(properties.getBucket());
            request.setObjectKey(objectKey);
@@ -51,6 +51,7 @@
            throw new BadRequestException("上传对象失败" + e.getMessage());
        } finally {
            FileUtil.del(file);
            CloseUtil.close(obsClient);
        }
    }
@@ -63,15 +64,16 @@
     * @return PutObjectResult
     */
    public static PutObjectResult putObject(ObsProperties properties, File file, String objectKey) {
        // 创建ObsClient实例
        ObsClient obsClient = getObsClient(properties);
        try {
            // 创建ObsClient实例
            ObsClient obsClient = getObsClient(properties);
            // 为待上传的本地文件路径,需要指定到具体的文件名
            return obsClient.putObject(properties.getBucket(), objectKey, file);
        } catch (Exception e) {
            throw new BadRequestException("上传对象失败" + e.getMessage());
        } finally {
            FileUtil.del(file);
            CloseUtil.close(obsClient);
        }
    }
@@ -107,6 +109,7 @@
            } finally {
                CloseUtil.close(in);
                CloseUtil.close(out);
                CloseUtil.close(obsClient);
            }
        }
        return path;
@@ -123,5 +126,17 @@
        ObsClient obsClient = getObsClient(properties);
        // 删除指定的对象
        obsClient.deleteObject(properties.getBucket(), objectKey);
        CloseUtil.close(obsClient);
    }
    public static String getPublicObjectUrl(ObsProperties properties, String objectKey) {
        return getPublicObjectUrl(properties.getBucket(), properties.getEndpoint(), objectKey);
    }
    public static String getPublicObjectUrl(String bucketName, String endpoint, String objectKey) {
        // 移除objectKey开头可能存在的文件分割符('/')
        String cleanObjectKey = objectKey.startsWith("/") ? objectKey.substring(1) : objectKey;
        // 标准URL格式
        return String.format("https://%s.%s/%s", bucketName, endpoint.replaceAll("^https?://", ""), cleanObjectKey);
    }
}