...
1
2
3
4
5
6
7 package gridfs_test
8
9 import (
10 "bytes"
11 "context"
12 "fmt"
13 "io"
14 "log"
15 "time"
16
17 "go.mongodb.org/mongo-driver/bson"
18 "go.mongodb.org/mongo-driver/bson/primitive"
19 "go.mongodb.org/mongo-driver/mongo/gridfs"
20 "go.mongodb.org/mongo-driver/mongo/options"
21 )
22
23 func ExampleBucket_OpenUploadStream() {
24 var fileContent []byte
25 var bucket *gridfs.Bucket
26
27
28
29 uploadOpts := options.GridFSUpload().
30 SetMetadata(bson.D{{"metadata tag", "tag"}})
31 uploadStream, err := bucket.OpenUploadStream("filename", uploadOpts)
32 if err != nil {
33 log.Fatal(err)
34 }
35 defer func() {
36 if err = uploadStream.Close(); err != nil {
37 log.Fatal(err)
38 }
39 }()
40
41
42
43 err = uploadStream.SetWriteDeadline(time.Now().Add(2 * time.Second))
44 if err != nil {
45 log.Fatal(err)
46 }
47
48 if _, err = uploadStream.Write(fileContent); err != nil {
49 log.Fatal(err)
50 }
51 }
52
53 func ExampleBucket_UploadFromStream() {
54 var fileContent []byte
55 var bucket *gridfs.Bucket
56
57
58
59 uploadOpts := options.GridFSUpload().
60 SetMetadata(bson.D{{"metadata tag", "tag"}})
61 fileID, err := bucket.UploadFromStream(
62 "filename",
63 bytes.NewBuffer(fileContent),
64 uploadOpts)
65 if err != nil {
66 log.Fatal(err)
67 }
68
69 fmt.Printf("new file created with ID %s", fileID)
70 }
71
72 func ExampleBucket_OpenDownloadStream() {
73 var bucket *gridfs.Bucket
74 var fileID primitive.ObjectID
75
76 downloadStream, err := bucket.OpenDownloadStream(fileID)
77 if err != nil {
78 log.Fatal(err)
79 }
80 defer func() {
81 if err := downloadStream.Close(); err != nil {
82 log.Fatal(err)
83 }
84 }()
85
86
87
88 err = downloadStream.SetReadDeadline(time.Now().Add(2 * time.Second))
89 if err != nil {
90 log.Fatal(err)
91 }
92
93 fileBuffer := bytes.NewBuffer(nil)
94 if _, err := io.Copy(fileBuffer, downloadStream); err != nil {
95 log.Fatal(err)
96 }
97 }
98
99 func ExampleBucket_DownloadToStream() {
100 var bucket *gridfs.Bucket
101 var fileID primitive.ObjectID
102
103 fileBuffer := bytes.NewBuffer(nil)
104 if _, err := bucket.DownloadToStream(fileID, fileBuffer); err != nil {
105 log.Fatal(err)
106 }
107 }
108
109 func ExampleBucket_Delete() {
110 var bucket *gridfs.Bucket
111 var fileID primitive.ObjectID
112
113 if err := bucket.Delete(fileID); err != nil {
114 log.Fatal(err)
115 }
116 }
117
118 func ExampleBucket_Find() {
119 var bucket *gridfs.Bucket
120
121
122 filter := bson.D{
123 {"length", bson.D{{"$gt", 1000}}},
124 }
125 cursor, err := bucket.Find(filter)
126 if err != nil {
127 log.Fatal(err)
128 }
129 defer func() {
130 if err := cursor.Close(context.TODO()); err != nil {
131 log.Fatal(err)
132 }
133 }()
134
135 type gridfsFile struct {
136 Name string `bson:"filename"`
137 Length int64 `bson:"length"`
138 }
139 var foundFiles []gridfsFile
140 if err = cursor.All(context.TODO(), &foundFiles); err != nil {
141 log.Fatal(err)
142 }
143
144 for _, file := range foundFiles {
145 fmt.Printf("filename: %s, length: %d\n", file.Name, file.Length)
146 }
147 }
148
149 func ExampleBucket_Rename() {
150 var bucket *gridfs.Bucket
151 var fileID primitive.ObjectID
152
153 if err := bucket.Rename(fileID, "new file name"); err != nil {
154 log.Fatal(err)
155 }
156 }
157
158 func ExampleBucket_Drop() {
159 var bucket *gridfs.Bucket
160
161 if err := bucket.Drop(); err != nil {
162 log.Fatal(err)
163 }
164 }
165
View as plain text