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

无需OAuth2认证,用Java Box开发者应用下载共享文件夹文件

解决Box共享文件夹无OAuth2授权下载文件的问题

你可以使用Box Java SDK提供的共享链接认证功能实现需求,无需获取共享者的OAuth2令牌,只要共享链接设置为「拥有链接的人可访问」,就能直接访问下载文件。

实现步骤与代码示例

  1. 确保项目引入Box Java SDK依赖(如使用Maven,添加对应dependency)
  2. 通过共享链接信息初始化认证客户端,获取文件/文件夹对象后执行下载:
import com.box.sdk.BoxAPIConnection;
import com.box.sdk.BoxFile;
import com.box.sdk.SharedLink;
import java.io.FileOutputStream;
import java.io.IOException;

public class BoxSharedLinkDownload {
    public static void main(String[] args) {
        // 目标文件的共享链接
        String sharedLinkUrl = "https://app.box.com/s/xxxxxxxxx";
        // 共享链接有密码则填写,无密码传null
        String sharedLinkPassword = null;

        // 初始化基于共享链接的认证连接
        BoxAPIConnection apiConnection = new BoxAPIConnection();
        apiConnection.setSharedLink(new SharedLink(sharedLinkUrl, sharedLinkPassword));

        // 从共享链接中提取文件ID
        String fileId = new SharedLink(sharedLinkUrl).getItemID();

        // 获取文件对象并下载到本地
        BoxFile file = new BoxFile(apiConnection, fileId);
        try (FileOutputStream outputStream = new FileOutputStream("local_downloaded_file.ext")) {
            file.download(outputStream);
            System.out.println("文件下载完成");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

额外说明

  • 必须确保共享链接权限为「拥有链接的任何人都可以查看/下载」,若设置为「仅限邀请人员」则无法通过此方式访问
  • 如果要遍历共享文件夹内所有文件,可先获取文件夹对象再递归遍历:
import com.box.sdk.BoxFolder;

// ... 其他代码 ...
String folderSharedLinkUrl = "https://app.box.com/s/yyyyyyyyy";
BoxFolder folder = new BoxFolder(apiConnection, new SharedLink(folderSharedLinkUrl).getItemID());
for (BoxFolder.Info itemInfo : folder) {
    if (itemInfo instanceof BoxFile.Info) {
        BoxFile file = new BoxFile(apiConnection, itemInfo.getID());
        // 执行下载操作
    }
}

内容的提问来源于stack exchange,提问作者David Loy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:42:38