...

Source file src/go.mongodb.org/mongo-driver/mongo/gridfs/gridfs_examples_test.go

Documentation: go.mongodb.org/mongo-driver/mongo/gridfs

     1  // Copyright (C) MongoDB, Inc. 2017-present.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License"); you may
     4  // not use this file except in compliance with the License. You may obtain
     5  // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
     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  	// Specify the Metadata option to include a "metadata" field in the files
    28  	// collection document.
    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  	// Use SetWriteDeadline to force a timeout if the upload does not succeed in
    42  	// 2 seconds.
    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  	// Specify the Metadata option to include a "metadata" field in the files
    58  	// collection document.
    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  	// Use SetReadDeadline to force a timeout if the download does not succeed
    87  	// in 2 seconds.
    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  	// Specify a filter to find all files with a length greater than 1000 bytes.
   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