You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OCI Java SDK通过预认证URL操作对象存储桶的问题排查

OCI Java SDK 预认证URL使用及问题解决

核心问题解答

1. 仅靠预认证URL、namespace和bucket name能否实现上传下载?

可以。OCI Java SDK支持通过**预认证请求(PAR)**完成对象存储的上传与下载操作,预认证URL本身已包含访问权限和有效期信息,无需完整的IAM身份认证凭证。

2. 是否有官方文档?

Oracle官方文档中包含预认证请求的详细使用说明,以及Java SDK对应的示例代码,涵盖上传、下载等常见操作。

3. 版本要求与所需依赖

  • Java版本:支持Java 8及以上(你的环境使用Java 8符合要求)
  • Maven版本:推荐3.5.0及以上
  • 必要依赖:
    除了对象存储核心SDK依赖,必须添加HTTP客户端实现依赖,错误日志已明确提示需要引入oci-java-sdk-common-httpclient-*系列中的一个,最常用的是Jersey客户端:
    <!-- OCI对象存储核心依赖 -->
    <dependency>
        <groupId>com.oracle.oci.sdk</groupId>
        <artifactId>oci-java-sdk-objectstorage</artifactId>
        <version>3.12.1</version> <!-- 与你使用的SDK版本保持一致 -->
    </dependency>
    <!-- HTTP客户端依赖 -->
    <dependency>
        <groupId>com.oracle.oci.sdk</groupId>
        <artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
        <version>3.12.1</version> <!-- 版本需与核心SDK匹配 -->
    </dependency>
    

错误解决与正确实现方式

NoSuchElementException原因

错误提示No http provider available是因为你只引入了核心SDK,但缺少HTTP客户端的实现依赖,OCI Java SDK需要明确的HTTP客户端来发起请求,添加上述oci-java-sdk-common-httpclient-jersey依赖即可解决。

预认证URL的正确使用姿势

不需要构建ObjectStorageClient并传入空的AuthenticationDetailsProvider,可以直接利用预认证URL进行操作:

上传文件示例

import com.oracle.bmc.objectstorage.transfer.UploadConfiguration;
import com.oracle.bmc.objectstorage.transfer.UploadManager;
import com.oracle.bmc.objectstorage.transfer.UploadManager.UploadRequest;

import java.io.File;
import java.net.URI;

public class ParUploadExample {
    public static void main(String[] args) throws Exception {
        String preauthenticatedUrl = "你的预认证URL";
        File fileToUpload = new File("要上传的文件路径");
        
        UploadManager uploadManager = new UploadManager(new UploadConfiguration());
        UploadRequest uploadRequest = UploadRequest.builder(URI.create(preauthenticatedUrl), fileToUpload)
                .build();
        
        uploadManager.upload(uploadRequest);
        System.out.println("文件上传完成");
    }
}

下载文件示例

import com.oracle.bmc.objectstorage.transfer.DownloadConfiguration;
import com.oracle.bmc.objectstorage.transfer.DownloadManager;
import com.oracle.bmc.objectstorage.transfer.DownloadManager.DownloadRequest;

import java.io.File;
import java.net.URI;

public class ParDownloadExample {
    public static void main(String[] args) throws Exception {
        String preauthenticatedUrl = "你的预认证URL";
        File targetFile = new File("下载保存的文件路径");
        
        DownloadManager downloadManager = new DownloadManager(new DownloadConfiguration());
        DownloadRequest downloadRequest = DownloadRequest.builder(URI.create(preauthenticatedUrl), targetFile)
                .build();
        
        downloadManager.download(downloadRequest);
        System.out.println("文件下载完成");
    }
}

内容的提问来源于stack exchange,提问作者Sitaram Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:04:56