baidu云存储BCS入门

          由于项目中多次使用到云存储方面的东西,特此总结一下,希望能更多的人使用百度BCS服务。关于如果申请开发者账号等问题,我这里就不再罗嗦了,大家去官方文档看一下即可:开发者中心,这个里讲的很好。

          首先文件上传后存储在一个叫bucket的地方,相当于顶级根目录吧!个人开发者可以创建5个bucket,然后每次操作文件的时候都需要指定相应的bucket。bucket不能通过api进行创建,必须手动在后台进行创建bucket,如下图所示,我就创建了一个photo-bucket.



 

        由于java的sdk直接封装了官方的rest接口,所以它依赖一些包,从官方文档来看,目前需要依赖下面的包:commons-logging、http-client4、httpcore4、commons-codec、flexjson这几个jar。

        不多说了,直接上代码吧:

         

import java.io.ByteArrayInputStream;
import java.io.IOException;

import com.baidu.inf.iis.bcs.BaiduBCS;
import com.baidu.inf.iis.bcs.auth.BCSCredentials;
import com.baidu.inf.iis.bcs.model.ObjectMetadata;
import com.baidu.inf.iis.bcs.model.X_BS_ACL;
import com.baidu.inf.iis.bcs.request.CreateBucketRequest;
import com.baidu.inf.iis.bcs.request.PutObjectRequest;


public class CloudStorage {
	private final static String AK = "AK";
	private final static String SK = "SK";
	private final static String HOST = "bcs.duapp.com";
	
	private final static BaiduBCS BAIDU_BCS = new BaiduBCS(new BCSCredentials(AK,SK),HOST);

	private final static String BUCKET = "photo-bucket";
	
	public static void upload(String fileName, byte[] contents) throws IOException {
		ObjectMetadata objectMetadata = new ObjectMetadata();
		objectMetadata.setContentEncoding("utf-8");
		objectMetadata.setContentLength(contents.length);
		PutObjectRequest request = new PutObjectRequest(BUCKET, fileName, 
				new ByteArrayInputStream(contents), objectMetadata);
		
		
		boolean isExist = BAIDU_BCS.doesObjectExist(BUCKET, fileName);
		if(isExist){
			System.out.println("文件已经存在!");
			return;
		}
		BAIDU_BCS.putObject(request);
	}

	public static void main(String[] args) throws IOException {
		String fileName = "/aaaa/我是中文";
		for(int i = 0; i < 10;i++){
			upload(fileName+"_"+i+".txt","测试一下中文1111".getBytes());
		}
	}
}

           稍微讲解一下,前面定义了访问BCS所需要的AK和SK以及上传主机,目前的上传主机是确定的: bcs.duapp.com,然后声明了当前操作的bucket。在main函数里面循环上传10个文件,在上传文件的地方,指定上传文件的原数据,这里我们只给了比较简单的encoding和content-length参数。同时里面有一个文件是否存在的判断,我在这个地方只是做一个demo,bcs在存储文件的时候如果原来已经存在同名文件则直接进行覆盖,并没有任何提示信息,这点要特别注意。

           这里需要特别注意的是上传文件的时候文件名称必须以斜杠/开始,最后一个斜杠之前的路径信息如果bcs发现不存在就会在上面创建相应的目录,所以这个里面会创建aaaa目录,然后将10个文件上传到aaaa目录下面。我们来看一下上传后的效果图。

         

 

            好这个就先写到这里,从官方文档看出bcs支持断点续传等特性,后续还对这个进行详细的讲解,这个就是将大家领进门。

           

            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值