| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package store
- import (
- "bytes"
- "context"
- "github.com/qiniu/api.v7/v7/auth/qbox"
- "github.com/qiniu/api.v7/v7/storage"
- "mime/multipart"
- "path/filepath"
- )
- type Qn struct {
- access string
- secret string
- bucket string
- zone string
- cfg storage.Config
- upToken string
- mac *qbox.Mac
- bucketManager *storage.BucketManager
- }
- var zone_map = map[string]*storage.Zone{
- "huanan": &storage.ZoneHuanan,
- "huadong": &storage.ZoneHuadong,
- "huabei": &storage.ZoneHuabei,
- "beimei": &storage.ZoneBeimei,
- }
- func NewQn(accessKey, secretKey, bucket, zone string) *Qn {
- qn := &Qn{
- access: accessKey,
- secret: secretKey,
- bucket: bucket,
- zone: zone,
- }
- putPolicy := storage.PutPolicy{
- Scope: bucket,
- }
- qn.mac = qbox.NewMac(accessKey, secretKey)
- qn.upToken = putPolicy.UploadToken(qn.mac)
- qn.cfg = storage.Config{}
- _, ok := zone_map[zone]
- if ok {
- qn.cfg.Zone = zone_map[zone]
- } else {
- qn.cfg.Zone = &storage.ZoneHuanan
- }
- qn.cfg.UseHTTPS = false
- qn.cfg.UseCdnDomains = false
- qn.bucketManager = storage.NewBucketManager(qn.mac, &qn.cfg)
- return qn
- }
- /**
- 上传, 返回上传后的文件名
- */
- func (self *Qn) Upload(absfile string) (string, error) {
- formUploader := storage.NewFormUploader(&self.cfg)
- ret := storage.PutRet{}
- putExtra := storage.PutExtra{}
- key := filepath.Base(absfile)
- err := formUploader.PutFile(context.Background(), &ret, self.upToken, key, absfile, &putExtra)
- if err != nil {
- return "", err
- }
- return ret.Key, nil
- }
- func (self *Qn) UploadFormFile(fh *multipart.FileHeader) (string, error) {
- formUploader := storage.NewFormUploader(&self.cfg)
- ret := storage.PutRet{}
- putExtra := storage.PutExtra{}
- content := []byte("")
- contentLen := fh.Size
- err := formUploader.PutWithoutKey(context.Background(), &ret, self.upToken,
- bytes.NewReader(content), contentLen, &putExtra)
- if err != nil {
- return "", err
- }
- return ret.Key, nil
- }
- func (self *Qn) Delete(url string) error {
- key := filepath.Base(url)
- return self.bucketManager.Delete(self.bucket, key)
- }
|