百度云存储服务BCS教程使用java接入
2014-08-30 13:28
549 查看
目前百度云存储服务已为广大开发者提供了以下SDK:
PHP SDK
Java SDK
Python SDK
C/C++(linux版本)SDK
1.首先得先注册百度帐号,然后申请加入百度开发者。这个就不解释了
2.在百度开发者平台http://developer.baidu.com,随意创建一个应用,如下主要是要获得一个API key跟Secret Key使用服务要用到
![](http://img.blog.csdn.net/20140830133156003?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGluY294/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.进入应用后点击右边的云存储,创建一个bucket
![](http://img.blog.csdn.net/20140830133328683?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGluY294/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4.接下来就可以在java中使用文件上传到这边的这个bucket了。
以下是官方的demo,使用前先到百度开发者平台下载对应的SDK,将包导入项目。
5.成功的话,就会在上面看到多了一个文件
PHP SDK
Java SDK
Python SDK
C/C++(linux版本)SDK
1.首先得先注册百度帐号,然后申请加入百度开发者。这个就不解释了
2.在百度开发者平台http://developer.baidu.com,随意创建一个应用,如下主要是要获得一个API key跟Secret Key使用服务要用到
3.进入应用后点击右边的云存储,创建一个bucket
4.接下来就可以在java中使用文件上传到这边的这个bucket了。
以下是官方的demo,使用前先到百度开发者平台下载对应的SDK,将包导入项目。
package com.sam.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.baidu.inf.iis.bcs.BaiduBCS; import com.baidu.inf.iis.bcs.auth.BCSCredentials; import com.baidu.inf.iis.bcs.auth.BCSSignCondition; import com.baidu.inf.iis.bcs.http.HttpMethodName; import com.baidu.inf.iis.bcs.model.BCSClientException; import com.baidu.inf.iis.bcs.model.BCSServiceException; import com.baidu.inf.iis.bcs.model.BucketSummary; import com.baidu.inf.iis.bcs.model.Empty; 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.model.Resource; import com.baidu.inf.iis.bcs.model.SuperfileSubObject; import com.baidu.inf.iis.bcs.model.X_BS_ACL; import com.baidu.inf.iis.bcs.policy.Policy; import com.baidu.inf.iis.bcs.policy.PolicyAction; import com.baidu.inf.iis.bcs.policy.PolicyEffect; import com.baidu.inf.iis.bcs.policy.Statement; import com.baidu.inf.iis.bcs.request.CreateBucketRequest; import com.baidu.inf.iis.bcs.request.GenerateUrlRequest; import com.baidu.inf.iis.bcs.request.GetObjectRequest; import com.baidu.inf.iis.bcs.request.ListBucketRequest; import com.baidu.inf.iis.bcs.request.ListObjectRequest; import com.baidu.inf.iis.bcs.request.PutObjectRequest; import com.baidu.inf.iis.bcs.request.PutSuperfileRequest; import com.baidu.inf.iis.bcs.response.BaiduBCSResponse; /** * 测试百度云存储服务() * @author Samuel *@date 2014-08-30 */ @SuppressWarnings("unused") public class TestBaiduBCS { private static final Log log = LogFactory.getLog(TestBaiduBCS.class); // ---------------------------------------- static String host = "bcs.duapp.com";//这个是固定的 static String accessKey = "此处填上面的API key"; static String secretKey = "此处填上面的Secret Key"; static String bucket = "此处为上面创建的bucket,当然也可以新建,底下例子有"; // ---------------------------------------- static String object = "/first-object"; static File destFile = new File("test"); /** * @param args * @throws URISyntaxException * @throws IOException */ public static void main(String[] args) throws URISyntaxException, IOException { // TODO Auto-generated method stub BCSCredentials credentials = new BCSCredentials(accessKey, secretKey); BaiduBCS baiduBCS = new BaiduBCS(credentials, host); // baiduBCS.setDefaultEncoding("GBK"); baiduBCS.setDefaultEncoding("UTF-8"); // Default UTF-8 try { // -------------bucket--操作bucket----------- // listBucket(baiduBCS); // createBucket(baiduBCS); // deleteBucket(baiduBCS); // getBucketPolicy(baiduBCS); // putBucketPolicyByPolicy(baiduBCS); // putBucketPolicyByX_BS_ACL(baiduBCS, X_BS_ACL.PublicControl); // listObject(baiduBCS); // ------------object-上传文件------------ putObjectByFile(baiduBCS); // putObjectByInputStream(baiduBCS); // getObjectWithDestFile(baiduBCS); // putSuperfile(baiduBCS); // deleteObject(baiduBCS); // getObjectMetadata(baiduBCS); // setObjectMetadata(baiduBCS); // copyObject(baiduBCS, bucket, object + "_copy" + // (System.currentTimeMillis())); // getObjectPolicy(baiduBCS); // putObjectPolicyByPolicy(baiduBCS); // putObjectPolicyByX_BS_ACL(baiduBCS, X_BS_ACL.PublicControl); // ------------common------------------ // generateUrl(BaiduBCS baiduBCS); } catch (BCSServiceException e) { log.warn("Bcs return:" + e.getBcsErrorCode() + ", " + e.getBcsErrorMessage() + ", RequestId=" + e.getRequestId()); } catch (BCSClientException e) { e.printStackTrace(); } } public static void generateUrl(BaiduBCS baiduBCS) { GenerateUrlRequest generateUrlRequest = new GenerateUrlRequest(HttpMethodName.GET, bucket, object); generateUrlRequest.setBcsSignCondition(new BCSSignCondition()); generateUrlRequest.getBcsSignCondition().setIp("1.1.1.1"); generateUrlRequest.getBcsSignCondition().setTime(123455L); generateUrlRequest.getBcsSignCondition().setSize(123455L); System.out.println(baiduBCS.generateUrl(generateUrlRequest)); } public static void copyObject(BaiduBCS baiduBCS, String destBucket, String destObject) { ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType("image/jpeg"); baiduBCS.copyObject(new Resource(bucket, object), new Resource(destBucket, destObject), objectMetadata); baiduBCS.copyObject(new Resource(bucket, object), new Resource(destBucket, destObject), null); baiduBCS.copyObject(new Resource(bucket, object), new Resource(destBucket, destObject)); } private static void createBucket(BaiduBCS baiduBCS) { // baiduBCS.createBucket(bucket); baiduBCS.createBucket(new CreateBucketRequest(bucket, X_BS_ACL.PublicRead)); } private static void deleteBucket(BaiduBCS baiduBCS) { baiduBCS.deleteBucket(bucket); } public static void deleteObject(BaiduBCS baiduBCS) { Empty result = baiduBCS.deleteObject(bucket, object).getResult(); log.info(result); } private static void getBucketPolicy(BaiduBCS baiduBCS) { BaiduBCSResponse<Policy> response = baiduBCS.getBucketPolicy(bucket); log.info("After analyze: " + response.getResult().toJson()); log.info("Origianal str: " + response.getResult().getOriginalJsonStr()); } public static void getObjectMetadata(BaiduBCS baiduBCS) { ObjectMetadata objectMetadata = baiduBCS.getObjectMetadata(bucket, object).getResult(); log.info(objectMetadata); } private static void getObjectPolicy(BaiduBCS baiduBCS) { BaiduBCSResponse<Policy> response = baiduBCS.getObjectPolicy(bucket, object); log.info("After analyze: " + response.getResult().toJson()); log.info("Origianal str: " + response.getResult().getOriginalJsonStr()); } private static void getObjectWithDestFile(BaiduBCS baiduBCS) { GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, object); baiduBCS.getObject(getObjectRequest, destFile); } private static void listBucket(BaiduBCS baiduBCS) { ListBucketRequest listBucketRequest = new ListBucketRequest(); BaiduBCSResponse<List<BucketSummary>> response = baiduBCS.listBucket(listBucketRequest); for (BucketSummary bucket : response.getResult()) { log.info(bucket); } } private static void listObject(BaiduBCS baiduBCS) { ListObjectRequest listObjectRequest = new ListObjectRequest(bucket); listObjectRequest.setStart(0); listObjectRequest.setLimit(20); // ------------------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<ObjectListing> response = baiduBCS.listObject(listObjectRequest); log.info("we get [" + response.getResult().getObjectSummaries().size() + "] object record."); for (ObjectSummary os : response.getResult().getObjectSummaries()) { log.info(os.toString()); } } private static void putBucketPolicyByPolicy(BaiduBCS baiduBCS) { Policy policy = new Policy(); Statement st1 = new Statement(); st1.addAction(PolicyAction.all).addAction(PolicyAction.get_object); st1.addUser("zhengkan").addUser("zhangyong01"); st1.addResource(bucket + "/111").addResource(bucket + "/111"); st1.setEffect(PolicyEffect.allow); policy.addStatements(st1); baiduBCS.putBucketPolicy(bucket, policy); } private static void putBucketPolicyByX_BS_ACL(BaiduBCS baiduBCS, X_BS_ACL acl) { baiduBCS.putBucketPolicy(bucket, acl); } public static void putObjectByFile(BaiduBCS baiduBCS) { PutObjectRequest request = new PutObjectRequest(bucket, object, createSampleFile()); ObjectMetadata metadata = new ObjectMetadata(); // metadata.setContentType("text/html"); request.setMetadata(metadata); BaiduBCSResponse<ObjectMetadata> response = baiduBCS.putObject(request); ObjectMetadata objectMetadata = response.getResult(); log.info("x-bs-request-id: " + response.getRequestId()); log.info(objectMetadata); } public static void putObjectByInputStream(BaiduBCS baiduBCS) throws FileNotFoundException { File file = createSampleFile(); InputStream fileContent = new FileInputStream(file); ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType("text/html"); objectMetadata.setContentLength(file.length()); PutObjectRequest request = new PutObjectRequest(bucket, object, fileContent, objectMetadata); ObjectMetadata result = baiduBCS.putObject(request).getResult(); log.info(result); } private static void putObjectPolicyByPolicy(BaiduBCS baiduBCS) { Policy policy = new Policy(); Statement st1 = new Statement(); st1.addAction(PolicyAction.all).addAction(PolicyAction.get_object); st1.addUser("zhengkan").addUser("zhangyong01"); st1.addResource(bucket + object).addResource(bucket + object); st1.setEffect(PolicyEffect.allow); policy.addStatements(st1); baiduBCS.putObjectPolicy(bucket, object, policy); } private static void putObjectPolicyByX_BS_ACL(BaiduBCS baiduBCS, X_BS_ACL acl) { baiduBCS.putObjectPolicy(bucket, object, acl); } public static void putSuperfile(BaiduBCS baiduBCS) { List<SuperfileSubObject> subObjectList = new ArrayList<SuperfileSubObject>(); // 0 BaiduBCSResponse<ObjectMetadata> response1 = baiduBCS.putObject(bucket, object + "_part0", createSampleFile()); subObjectList.add(new SuperfileSubObject(bucket, object + "_part0", response1.getResult().getETag())); // 1 BaiduBCSResponse<ObjectMetadata> response2 = baiduBCS.putObject(bucket, object + "_part1", createSampleFile()); subObjectList.add(new SuperfileSubObject(bucket, object + "_part1", response2.getResult().getETag())); // put superfile PutSuperfileRequest request = new PutSuperfileRequest(bucket, object + "_superfile", subObjectList); BaiduBCSResponse<ObjectMetadata> response = baiduBCS.putSuperfile(request); ObjectMetadata objectMetadata = response.getResult(); log.info("x-bs-request-id: " + response.getRequestId()); log.info(objectMetadata); } public static void setObjectMetadata(BaiduBCS baiduBCS) { ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType("text/html12"); baiduBCS.setObjectMetadata(bucket, object, objectMetadata); } private static File createSampleFile() { try { File file = File.createTempFile("java-sdk-", ".txt"); file.deleteOnExit(); Writer writer = new OutputStreamWriter(new FileOutputStream(file)); writer.write("01234567890123456789\n"); writer.write("01234567890123456789\n"); writer.write("01234567890123456789\n"); writer.write("01234567890123456789\n"); writer.write("01234567890123456789\n"); writer.close(); return file; } catch (IOException e) { log.error("tmp file create failed."); return null; } } }
5.成功的话,就会在上面看到多了一个文件
相关文章推荐
- Java使用百度云存储BCS-让你的数据下载飞起来
- Python Web框架Flask中使用百度云存储BCS实例
- Python Web框架Flask中使用百度云存储BCS实例
- 使用Mbed通过以太网TCP接入FRDM-K64F开发板的Java / NetBeans教程
- BCS百度云存储无法创建bucket解决篇 以及API接口的使用
- Java结合百度云存储BCS代码分享
- [转]使用SOAP开发java web服务--Axis开发方案
- 使用SOAP开发java web服务--Axis开发方案
- 使用telnet登陆smtp服务发邮件(带身份验证)和Base64加密算法源码(java版)
- SQL Server SQL Agent服务使用教程小结
- WebService服务和ajax使用教程
- 使用JavaService让java程序加载为winNT系统服务
- 在Struts中使用JavaBean和List(多行数据)类型属性-JSP教程,Java技巧及代码
- 把java类变成 Windows NT服务的3中方法(使用 Java Serivce Wrapper)
- 使用 WebSphere Studio Application Developer 集成版,版本 4.1 开发 Java 消息服务应用程序
- 使用Java Service Wrapper 把Java程序作为Windows系统服务
- SQL Server SQL Agent服务使用教程小结
- 使用 XML 通过 Java 类定义 Web服务
- Java高级编程:使用打印服务API
- 使用Wrapper来将Java程序转化为NT系统服务(转)