MCPcopy
hub / github.com/minio/minio-go / main

Function main

examples/s3/putobject-checksum.go:35–82  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

33)
34
35func main() {
36 // Note: YOUR-ACCESSKEYID, YOUR-SECRETACCESSKEY, my-testfile, my-bucketname and
37 // my-objectname are dummy values, please replace them with original values.
38
39 // Requests are always secure (HTTPS) by default. Set secure=false to enable insecure (HTTP) access.
40 // This boolean value is the last argument for New().
41
42 // New returns an Amazon S3 compatible client object. API compatibility (v2 or v4) is automatically
43 // determined based on the Endpoint value.
44 s3Client, err := minio.New("s3.amazonaws.com", &minio.Options{
45 Creds: credentials.NewStaticV4("YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", ""),
46 Secure: true,
47 })
48 if err != nil {
49 log.Fatalln(err)
50 }
51
52 object, err := os.Open("putobject-checksum.go")
53 if err != nil {
54 log.Fatalln(err)
55 }
56 defer object.Close()
57 objectStat, err := object.Stat()
58 if err != nil {
59 log.Fatalln(err)
60 }
61 // Create CRC32C:
62 crc := crc32.New(crc32.MakeTable(crc32.Castagnoli))
63 _, err = io.Copy(crc, object)
64 if err != nil {
65 log.Fatalln(err)
66 }
67 meta := map[string]string{"x-amz-checksum-crc32c": base64.StdEncoding.EncodeToString(crc.Sum(nil))}
68
69 // Reset object.
70 _, err = object.Seek(0, io.SeekStart)
71 if err != nil {
72 log.Fatalln(err)
73 }
74
75 // Upload object.
76 // Checksums are different with multipart, so we disable that.
77 info, err := s3Client.PutObject(context.Background(), "my-bucket", "my-objectname", object, objectStat.Size(), minio.PutObjectOptions{ContentType: "application/octet-stream", UserMetadata: meta, DisableMultipart: true})
78 if err != nil {
79 log.Fatalln(err)
80 }
81 log.Println("Uploaded", "my-objectname", "of size:", info.Size, "with CRC32C:", info.ChecksumCRC32C, "successfully.")
82}

Callers

nothing calls this directly

Calls 6

NewStaticV4Function · 0.92
StatMethod · 0.80
EncodeToStringMethod · 0.80
CloseMethod · 0.45
SeekMethod · 0.45
PutObjectMethod · 0.45

Tested by

no test coverage detected