本文整理汇总了Golang中labix/org/v2/mgo.GridFile.Id方法的典型用法代码示例。如果您正苦于以下问题:Golang GridFile.Id方法的具体用法?Golang GridFile.Id怎么用?Golang GridFile.Id使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类labix/org/v2/mgo.GridFile
的用法示例。
在下文中一共展示了GridFile.Id方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Put
func (s *Storage) Put(filename string, contentType string, body io.Reader, attachment *tenpu.Attachment) (err error) {
var f *mgo.GridFile
s.database.DatabaseDo(func(db *mgo.Database) {
f, err = db.GridFS("fs").Create(filename)
defer f.Close()
if err != nil {
panic(err)
}
if attachment.Id != "" {
f.SetId(bson.ObjectIdHex(attachment.Id))
}
f.SetContentType(contentType)
_, err = io.Copy(f, body)
})
if err == io.ErrUnexpectedEOF {
attId := f.Id().(bson.ObjectId)
s.Delete(attId.Hex())
return
}
if attachment.Id == "" {
attachment.Id = f.Id().(bson.ObjectId).Hex()
attachment.ContentLength = f.Size()
attachment.ContentType = f.ContentType()
attachment.Filename = f.Name()
attachment.MD5 = f.MD5()
if attachment.IsImage() {
s.database.DatabaseDo(func(db *mgo.Database) {
f, err := db.GridFS("fs").OpenId(bson.ObjectIdHex(attachment.Id))
if err == nil {
config, _, err := image.DecodeConfig(f)
f.Close()
if err == nil {
attachment.Width = config.Width
attachment.Height = config.Height
}
}
})
}
}
return
}
示例2: Cleanup
func (s *mongodbStorage) Cleanup(latest int) error {
pids := s.getAllProblemIds()
for _, v := range pids {
s.doCleanup(v, latest)
}
pids = s.getAllGridPrefixes()
iter := s.GridFS.Find(nil).Sort("filename").Iter()
var f *mgo.GridFile
for s.GridFS.OpenNext(iter, &f) {
if !strings.HasPrefix(f.Name(), "problem/") {
continue
}
if !hasAnyPrefix(f.Name(), pids) {
fmt.Printf("Remove: %s\n", f.Name())
s.GridFS.RemoveId(f.Id())
}
}
return nil
}
示例3: Put
func (s *Storage) Put(filename string, contentType string, body io.Reader, attachment *tenpu.Attachment) (err error) {
var f *mgo.GridFile
s.database.DatabaseDo(func(db *mgo.Database) {
f, err = db.GridFS("fs").Create(filename)
defer f.Close()
if err != nil {
panic(err)
}
f.SetContentType(contentType)
io.Copy(f, body)
})
attachment.Id = f.Id().(bson.ObjectId).Hex()
attachment.ContentLength = f.Size()
attachment.ContentType = f.ContentType()
attachment.Filename = f.Name()
attachment.MD5 = f.MD5()
return
}
示例4: FindAllFiles
// 查找文件
func FindAllFiles() {
gfs := db.GridFS("fs")
iter := gfs.Find(nil).Iter()
var f *mgo.GridFile
for gfs.OpenNext(iter, &f) {
fmt.Printf("Filename: %s, %v\n", f.Name(), f.Id())
b := make([]byte, 512)
w, err := os.Create("upload/" + f.Name())
if err != nil {
continue
}
for {
n, _ := f.Read(b)
if n == 0 {
break
}
w.Write(b[0:n])
}
defer w.Close()
}
if iter.Err() != nil {
panic(iter.Err())
}
}