Hi,

I am trying to upload a local image file to an AWS S3 bucket and return the 
public URL in Golang. This is the core Golang code I have written to 
interact with my S3 bucket:

    creds := 
credentials.NewSharedCredentials("/Users/username/.aws/credentials", 
"default")

    config := &aws.Config{
        Region:      aws.String("us-west-2"),
        Credentials: creds,
    }

    sess := session.New(config)

    uploader := s3manager.NewUploader(sess, func(u *s3manager.Uploader) {
    u.PartSize = 64 * 1024 * 1024 
    u.LeavePartsOnError = true
    })

    fmt.Println(header.Filename)

    fileInfo, _ := out.Stat()
var size int64 =  fileInfo.Size()
fmt.Println("size", size)
buffer := make([]byte, size) 

out.Read(buffer)
fileBytes := bytes.NewReader(buffer)

    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String("bucket-name"),
        Key: aws.String(header.Filename),
        Body: aws.ReadSeekCloser(fileBytes),
        ContentType: aws.String("image/jpeg"),
        ACL: aws.String("public-read"),
    })
    if err != nil || result == nil {
        log.Fatalln("Failed to upload", err)
    }

    log.Println("Successfully uploaded to", result.Location)

With this code, the file is uploaded successfully to my s3 bucket with the 
correct size in bytes, but when I click on the URL, a black square is 
displayed instead of the actual image. If I change the ContentType field to 
allow file types dynamically, when I click on the URL, it downloads the 
image, but the image cannot be opened because "it may have been damaged." 
How can I fix this Golang code to just upload an image to an S3 bucket and 
get the public URL as a result of that upload?

This may be more of a debugging question pertaining to AWS S3 than Golang, 
but any help would be appreciated. Thank you!

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to