锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

使用百度BCS-Java-SDK文件夹上传及下载

时间:2022-10-15 06:30:00 bcs电容开关103sr13a

前话: 最近比较闲,用了百度/google/360/金山云盘,想用云盘开发自己的程序API来上传下载文件,之前了解过百度云存储API,我从来没有试过,所以我今天试过。空间似乎是1TB,确实挺大的。只有在样本中循环上传文件进行测试,才写不到1GB。360似乎也有云API;百度除了BCS还有PCS,应该取代BCS,明天可以试试。不过BCS SDK相比之下,非常不专业JDK规范性差很多。

package com.test;

import java.io.File;

import com.baidu.inf.iis.bcs.BaiduBCS;

import com.baidu.inf.iis.bcs.auth.BCSCredentials;

import com.baidu.inf.iis.bcs.model.ObjectListing;

import com.baidu.inf.iis.bcs.model.ObjectMetadata;

import com.baidu.inf.iis.bcs.model.ObjectSummary;

import com.baidu.inf.iis.bcs.request.GetObjectRequest;

import com.baidu.inf.iis.bcs.request.ListObjectRequest;

import com.baidu.inf.iis.bcs.request.PutObjectRequest;

import com.baidu.inf.iis.bcs.response.BaiduBCSResponse;

public class Main

{

/**

* 百度云存储APP固定字段的服务器

*/

static String host = "bcs.duapp.com";

/**

* 开发人员自己建立的存储池

*/

static String bucket = "kitphoto";

/**

* 上传文件夹到百度云存储

*/

static String inputFileDir = "C:\\photo\\input\\";

/**

* 从百度云存储池下载文件到目录

*/

static String outputFileDir = "C:\\photo\\output\\";

/**

* @param args

*/

public static void main(String[] args){

// access 和secret key申请参考http://developer.baidu.com/wiki/index.php?title=docs/cplat/stor/guide

BCSCredentials credentials = new BCSCredentials("your access key",

"your secret key");

BaiduBCS baiduBCS = new BaiduBCS(credentials, host);

baiduBCS.setDefaultEncoding("UTF-8"); // Default UTF-8

clearBucket(baiduBCS, bucket);

putFilesByDir(baiduBCS, inputFileDir, "/input/");

//getFilesByDir(baiduBCS, outputFileDir, "/input/");

}

/* 测试使用 */

static int count = 0;

/**

* 上传单个文件BCS上

* @param baiduBCS

* @param file :待上传的文件对象

* @param dir : 文件在BCS上的路径

*/

private static void putObjectByFile(BaiduBCS baiduBCS, File file, String dir)

{

count ;

PutObjectRequest request = new PutObjectRequest(bucket, dir "t" count file.getName(), file);

ObjectMetadata metadata = new ObjectMetadata();

// metadata.setContentType("text/html");

request.setMetadata(metadata);

BaiduBCSResponse response = baiduBCS.putObject(request);

ObjectMetadata objectMetadata = response.getResult();

System.out.println("Upload file :" file.getName());

}

/**

* 清空BCS上bucket,遍历bucket下面的内容,逐一删除

* @param baiduBCS

* @param bucket

*/

private static void clearBucket(BaiduBCS baiduBCS, String bucket)

{

/* 有内容时不允许删除bucket */

// baiduBCS.deleteBucket(bucket);

// CreateBucketRequest request = new CreateBucketRequest(bucket);

// baiduBCS.createBucket(request);

/* 获取存储池内容逐项删除 */

ListObjectRequest listObjectRequest = new ListObjectRequest(bucket);

BaiduBCSResponse response = baiduBCS.listObject(listObjectRequest);

for (ObjectSummary os : response.getResult().getObjectSummaries())

{

System.out.println("Delete: bucket = " bucket "file = " os.toString());

baiduBCS.deleteObject(bucket, os.getName());

}

}

/**

* 获取BCS将目录下的所有文件下载到本地

* @param baiduBCS

* @param localDir :指定将文件保存到本地的路径

* @param serverDir: BCS文件路径在服务器上

*/

private static void getFilesByDir(BaiduBCS baiduBCS, String localDir, String serverDir)

{

ListObjectRequest listObjectRequest = new ListObjectRequest(bucket);

listObjectRequest.setStart(0);

listObjectRequest.setLimit(20);

listObjectRequest.setPrefix(serverDir);

// ------------------by dir

{

// prefix must start with '/' and end with '/'

// listObjectRequest.setPrefix("/1/");

// listObjectRequest.setListModel(2);

}

// ------------------only object

{

// prefix must start with '/'

// listObjectRequest.setPrefix("/1/");

}

BaiduBCSResponse response = baiduBCS.listObject(listObjectRequest);

//log.info("we get [" response.getResult().getObjectSummaries().size() "] object record.");

for (ObjectSummary os : response.getRsult().getObjectSummaries()) {

System.out.println("Download : " + os.toString());

GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, os.getName());

File file = new File(localDir + getFileName(os.getName()));

baiduBCS.getObject(getObjectRequest, file);

}

}

/**

* 将本地路径下的文件上传到BCS服务器上,过滤本地隐藏文件

* @param baiduBCS

* @param localDir

* @param serverDir

*/

private static void putFilesByDir(BaiduBCS baiduBCS, String localDir, String serverDir)

{

File file = new File(localDir);

int count = 1;

if(!file.isDirectory())

{

putObjectByFile(baiduBCS, file, serverDir);

}

else

{

while(count < 100000) /* 这层循环仅用于测试BCS存储池最大可存储多少数据 */

{

String[] list = file.list();

for(int i = 0; i < list.length; i++)

{

File subFile = new File(localDir + "\\" + list[i]);

/* 过滤隐藏文件 */

if(subFile.isHidden())

{

continue;

}

putObjectByFile(baiduBCS, subFile, serverDir);

}

count++;

}

}

}

private static String getFileName(String fullName)

{

String[] strs = fullName.split("/");

return strs[strs.length - 1];

}

}

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章