第一次的go访问七牛云存储的api


官网看api,如何使用,对于第一次使用go语言的我略显吃力,嘿嘿,看了个demo就会了,而且超简单

package main


import (
    "fmt"
    . "github.com/qiniu/api/conf"
    "github.com/qiniu/api/fop"//这个地方是坑,网上的api。如果下载下来,请改本地地址,这里是网络地址,而且官网没提示要引用下面几个
    "github.com/qiniu/api/io"
    "github.com/qiniu/api/rs"
    "log"
)

func init() {

    ACCESS_KEY = "自己创建帐号密钥生成的"
    SECRET_KEY = "自己创建帐号密钥生成的"
}

//GET upload access token
func uptoken(bucketName string) string {
    putPolicy := rs.PutPolicy{
        Scope: bucketName,
        //CallbackUrl: callbackUrl,
        //CallbackBody:callbackBody,
        //ReturnUrl: returnUrl,
        //ReturnBody: returnBody,
        //AsyncOps: asyncOps,
        //EndUser: endUser,
        //Expires: expires,
    }
    return putPolicy.Token(nil)
}

func main() {
    //上传本地文件
    upload()

    //5.1 获取文件信息
    //getFileInfo()

    //6.1.1 查看图像属性
    //imageAttr()

    //5.2 删除文件
    //delFile()

}

//6.1.1 查看图像属性,可以没有AK和SK
func imageAttr() {
    var imageUrl = "http://needkane.qiniudn.com/kane2.jpg"
    ii := fop.ImageInfo{}
    infoRet, err := ii.Call(nil, imageUrl)
    if err != nil {
        // 产生错误
        log.Println("fop getImageInfo failed:", err)
        return
    }

    log.Println(infoRet.Height, infoRet.Width, infoRet.ColorModel, infoRet.Format)
}

func makeImageInfoUrl(imageUrl string) string {
    ii := fop.ImageInfo{}
    return ii.MakeRequest(imageUrl)
}

//5.2 删除文件
func delFile() {
    bucket := "自己建立的空间名称"
    key := "goupload.jpg"
    var rsCli = rs.New(nil)

    err := rsCli.Delete(nil, bucket, key)
    if err != nil {
        // 产生错误
        log.Println("rs.Copy failed:", err)
        return
    }
}

//5.1 获取文件信息
func getFileInfo() {
    var ret rs.Entry
    bucket := "attach"
    key := "goupload.jpg"
    var rsCli = rs.New(nil)

    ret, err := rsCli.Stat(nil, bucket, key)//如果这里不用:= ,改为=,则必须前面通过var声明变量ret,err

    if err != nil {
        // 产生错误
        log.Println("rs.Stat failed:", err)
        return
    }

    // 处理返回值
    log.Println(ret)
}

//上传本地文件
func upload() {
    uptoken := uptoken("自己建立的空间名称")
    fmt.Printf("uptoken:%s\n", uptoken)

    var err error
    var ret io.PutRet
    var extra = &io.PutExtra{
    //Params: params,
    //MimeType: mieType,
    //Crc32: crc32,
    //CheckCrc: CheckCrc,
    }

    var key = "kane2.jpg"
    var localFile = "/root/Desktop/kane.jpg"

    // ret 变量用于存取返回的信息,详情见 io.PutRet
    // uptoken 为业务服务器生成的上传口令
    // key 为文件存储的标识
    // localFile 为本地文件名
    // extra 为上传文件的额外信息,详情见 io.PutExtra,可选
    err = io.PutFile(nil, &ret, uptoken, key, localFile, extra)

    if err != nil {
        //上传产生错误
        log.Print("io.PutFile failed:", err)
        return
    }

    //上传成功,处理返回值
    log.Print(ret.Hash, ret.Key)

}

有个响应迟钝的bug,这里调用了api,但是图形界面上没有显示调用的次数

相关内容