### 连接 ~~~ package ceph import ( "gopkg.in/amz.v1/aws" "gopkg.in/amz.v1/s3" ) var ( CephConn *s3.S3 ) func init() { // 初始化ceph信息 auth := aws.Auth{ AccessKey: "", SecretKey: "", } region := aws.Region{ Name:"default", EC2Endpoint:"http://127.0.0.1:9080", S3Endpoint:"http://127.0.0.1:9080", S3BucketEndpoint:"", S3LocationConstraint:false, // 没有区域限制 S3LowercaseBucket:false, // bucket没有大小写限制 Sign:aws.SignV2, } // 创建🔓s3类型连接 CephConn = s3.New(auth, region) } // 获取指定Bucker func GetCephBucker(bucket string)*s3.Bucket { return CephConn.Bucket(bucket) } ~~~ ### 简单操作 ~~~ func TestCeph(t *testing.T) { bucker := ceph.GetCephBucker("testbucket1") // 创建一个新的bucket err := bucker.PutBucket(s3.PublicRead) // 参数权限 if err != nil { t.Log(err.Error()) } // 查询bucket下面制定条件的object keys result, err := bucker.List("", "", "", 100)// 最多返回100条数据 if err != nil { t.Log(err.Error()) } fmt.Printf("object keys%v \n",result) // 上传新对象 err = bucker.Put("/a.txt",[]byte("just for test"),"octet-steam",s3.PublicRead) /** bucker.Put("/a.txt",[]byte("just for test"),"octet-steam",s3.PublicRead) put参数 1.在文件系统的绝对路径 2.内容 3.context-type 4.权限 */ if err != nil { t.Log(err.Error()) } // 查询下名制定条件的object keys result, err = bucker.List("", "", "", 100)// 最多返回100条数据 if err != nil { t.Log(err.Error()) } fmt.Printf("object keys%v \n",result) } ~~~ ### ceph小结 - 创建bucket ``` bucker := ceph.GetCephBucker("testbucket1") // 创建一个新的bucket err := bucker.PutBucket(s3.PublicRead) // 参数权限 ``` - 上传文件 ``` filename := "test.txt" bucker := ceph.GetCephBucker("userfile") cephPath := "/ceph/" + filename bytes, _ := ioutil.ReadFile(filename) bucker.Put(cephPath,bytes,"octet-stream",s3.PublicRead) ``` - 下载文件 ``` bucker := ceph.GetCephBucker("userfile") cephPath := "/ceph/test.txt" data, _ := bucker.Get(cephPath) ioutil.WriteFile("hello.text",data,00666) ```