前言:
上一篇文章讲到了BCS(百度云存储)的使用方法,本篇文章继续和大家探讨PCS(个人云存储)也就是代码和个人百度网盘的交互,实现文件上传,下载的功能,两外百度云PCS的API权限批不下来?不用怕!!!此文章教你怎么做;下一篇文章会和大家探讨百度云推送技术,谢谢大家;
正文:
实现PCS的思路和原理(以Android设备开发为例):
1.既然开发者的目的是用代码实现本地文件和百度网盘之间的传输,那么就必须先将两者连接起来,那么怎么连接呢?
开发者只要获取任一百度网盘的access_token号码,并将其加入到代码的指定位置,就能使用接口API来操作此百度网盘;下文将给出详细步骤,注意百度PCS是要申请权限的,官方迟迟不给批准,实际上我们可以利用技术绕开这一步的,欲知详情,请看下文。
2.当我们已经获得了某百度网盘的access_token号码,就可以有访问百度网盘的权利,桥梁已经搭好,只剩下怎么使用百度网盘的上传接口API和下载接口API了。下文给你获取API的demo,运行即可。
详细开发步骤:
1:获取自己百度网盘的access_token号码(百度云PCS的API权限批不下来?不用怕!!!)
直接上代码分析(注释可忽略):
注意:获取自己百度网盘的access_token号码的方法test_login()已经封装好,见本段文字下边。直接可以放进Java或者Android中调用,会进入授权页面,在授权页面中填入你的百度网盘的账号和密码,就会在屏幕上显示出你的access_token号码,你可以截屏记录下来,方便下一步骤使用;
private void test_login(){
// try {
// BaiduPCSClient pcsApi = new BaiduPCSClient();
//
// pcsApi.startOAuth(this, mbApiKey, new BaiduPCSClient.OAuthListener() {
//
// public void onException(String msg) {
// // TODO Auto-generated method stub
// Toast.makeText(getApplicationContext(), "Login failed " + msg, Toast.LENGTH_SHORT).show();
// }
//
// public void onComplete(Bundle values) {
// // TODO Auto-generated method stub
// if(null != values){
// mbOauth = values.getString(BaiduPCSClient.Key_AccessToken);
// Toast.makeText(getApplicationContext(), "Token: " + mbOauth + " User name:" + values.getString(BaiduPCSClient.Key_UserName), Toast.LENGTH_SHORT).show();
// }
// }
//
// public void onCancel() {
// // TODO Auto-generated method stub
// Toast.makeText(getApplicationContext(), "Login cancelled", Toast.LENGTH_SHORT).show();
// }
// });
//
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
BaiduOAuth oauthClient = new BaiduOAuth();
oauthClient.startOAuth(this, mbApiKey, new String[]{"basic", "netdisk"}, new BaiduOAuth.OAuthListener() {
public void onException(String msg) {
Toast.makeText(getApplicationContext(), "Login failed " + msg, Toast.LENGTH_SHORT).show();
}
public void onComplete(BaiduOAuthResponse response) {
if(null != response){
mbOauth = response.getAccessToken();
Toast.makeText(getApplicationContext(), "Token: " + mbOauth + " User name:" + response.getUserName(), Toast.LENGTH_SHORT).show();
}
}
public void onCancel() {
Toast.makeText(getApplicationContext(), "Login cancelled", Toast.LENGTH_SHORT).show();
}
});
}
注意:注意在代码中填入你的access_token
上传文件接口API的使用:
private void test_upload(){
String mboauth="你的access_token号码";
if(null != mbOauth){
Thread workThread = new Thread(new Runnable(){
public void run() {
//String tmpFile = "sdcard/test.jpg";
String tmpFile = "sdcard/myImage/2000001/upPhoto1.jpg";//上传文件的路径
String mbRootPath= "/apps/pcstest";//百度网盘上的路径必须以/apps/ 开头
BaiduPCSClient api = new BaiduPCSClient();
api.setAccessToken(mbOauth);
final BaiduPCSActionInfo.PCSFileInfoResponse response = api.uploadFile(tmpFile, mbRootPath + "/zzz.jpg", new BaiduPCSStatusListener(){
@Override
public void onProgress(long bytes, long total) {
// TODO Auto-generated method stub
final long bs = bytes;
final long tl = total;
mbUiThreadHandler.post(new Runnable(){
public void run(){
Toast.makeText(getApplicationContext(), "total: " + tl + " sent:" + bs, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public long progressInterval(){
return 1000;
}
});
mbUiThreadHandler.post(new Runnable(){
public void run(){
Toast.makeText(getApplicationContext(), response.status.errorCode + " " + response.status.message + " " + response.commonFileInfo.blockList, Toast.LENGTH_SHORT).show();
}
});
}
});
workThread.start();
}
}
另外需要所有API使用方法的请访问本人上传的资源(需要3个下载分的)链接:
http://download.csdn.net/detail/u014492257/8009789