已实现功能:
- 授权,获取 accessToken、refreshToken
- 上传文件/创建文件夹
- 分享文件
- 转存分享文件
- 查询文件列表
- 查询文件详情
- 管理文件(删除/复制)
<dependency>
<groupId>net.peihuan</groupId>
<artifactId>baidu-pan-starter</artifactId>
<version>1.3.0</version>
</dependency>
- 修改
application.yaml
文件,添加配置
baidu-pan:
client-id: "your client id"
device-id: 1111111
client-secret: "your secret"
share-third-id: 111 # 不需要分享则无需填写
share-secret: "secret" # 不需要分享则无需填写
root-dir: "/apps/your/root/path/" # 文件上传的根目录
- 注入
BaiduService
后配置持久化方式,即可使用:
@Component
public class BaiduTest {
@Autowired
private BaiduService baiduService;
@PostConstruct
public void init() {
// 必须配置持久化,不配置默认为内存实现
// TODO BaiduOps 需要用户基于 mysql or redis 来实现
BaiduOps ops = new RedisOpsImpl();
BaiduOAuthConfigStorage baiduOAuthConfigStorage = new BaiduOAuthConfigServiceImpl(ops);
baiduService.setConfigStorage(baiduOAuthConfigStorage);
}
public void getAuthorizeUrl() {
// 由于可能多个用户授权使用,state 可用于传递 userId
System.out.println(baiduService.getAuthorizeUrl("http://your.redirct.com", "your state"));
}
public void getAuthorizeUrl(String code) {
// 任何方法都需要传递 userId 来标记这个 code 属于哪个用户。
// 如果该系统只有开发者一个人需要授权百度云盘,userId 填写任意一个固定值即可
// 调用此方法后,内部会持久化 accessToken 和 refreshToken
System.out.println(baiduService.getAccessTokenByCode("1", code, "http://your.redirct.com"));
}
public void upload(File file) {
// 任何方法都需要传递 userId
// userId 为 1 的用户上传一个文件至 /apps/your/root/path/object/path
baiduService.getPanService().uploadFile("1", "object/path", file, RtypeEnum.OVERRIDE);
}
}
其他: 如果你不用 Spring 框架,也可以自己 new 一个 baiduService 来使用:
BaiduService baiduService = new BaiduServiceImpl(properties, okHttpClient);
// config your
baiduService.setConfigStorage(baiduOAuthConfigStorage);