本文整理汇总了Golang中github.com/AdRoll/goamz/s3.Bucket.PutReader方法的典型用法代码示例。如果您正苦于以下问题:Golang Bucket.PutReader方法的具体用法?Golang Bucket.PutReader怎么用?Golang Bucket.PutReader使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/AdRoll/goamz/s3.Bucket
的用法示例。
在下文中一共展示了Bucket.PutReader方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: makeupload
// Generate a function to use for uploading files as we walk the file tree from
// `base`.
func makeupload(base string, pattern *regexp.Regexp, bucket *s3.Bucket, bucketPrefix string, dryRun bool, progress *Progress) func(string, os.FileInfo, error) error {
// Remove any excess path separators from the bucket prefix.
bucketPrefix = strings.Trim(bucketPrefix, "/")
// Get a canonical version of the base dir
cleanBase := filepath.Clean(base)
// Create a closure for the upload function.
return func(path string, fi os.FileInfo, err error) (errOut error) {
if err != nil {
return err
}
if fi.IsDir() {
return nil
}
//fmt.Printf("Found an item: %s\n", path)
baseName := filepath.Base(path)
if !pattern.MatchString(baseName) {
//fmt.Printf("Item does not match pattern\n")
return nil
}
// Make sure we're comparing apples to apples when stripping off the
// base path. Use the canonical versions of both.
cleanPath := filepath.Clean(path)
relPath := cleanPath[len(cleanBase)+1:]
// If we encounter a file
// /path/to/base/foo/bar/baz
// <--- base ---><-- rel -->
// and our bucket prefix is `hello/files`, our file in S3 will be at
// s3://bucket-name/hello/files/foo/bar/baz
// <- prefix -><-- rel -->
s3Path := fmt.Sprintf("%s/%s", bucketPrefix, relPath)
// Update progress Count whether we were successful or not.
progress.Count += 1
if dryRun {
fmt.Printf("Dry run. Not uploading item to %s\n", s3Path)
return
}
fmt.Printf("Uploading item to: %s\n", s3Path)
reader, err := os.Open(path)
if err != nil {
fmt.Printf("Error opening %s for reading: %s\n", path, err)
progress.Errors++
return err
}
err = bucket.PutReader(s3Path, reader, fi.Size(), "binary/octet-stream", s3.BucketOwnerFull, s3.Options{})
if err != nil {
progress.Errors++
return err
}
// Count the bytes for this file as progress if there were
// no upoad errors.
progress.Bytes += fi.Size()
err = reader.Close()
if err != nil {
fmt.Printf("Error closing %s: %s\n", path, err)
progress.Errors++
errOut = err
}
// Now remove the file locally.
err = os.Remove(path)
if err != nil {
fmt.Printf("Error removing %s: %s\n", path, err)
progress.Errors++
errOut = err
}
return
}
}