in go-example-crash-uploader-extension/upload.go [49:89]
func uploadFileToS3(svc *s3.S3, s3bucket, filename string) error {
println(printPrefix, "Uploading", filename)
file, err := os.Open(filename)
if err != nil {
return err
}
defer file.Close()
resp, err := createMultipartUpload(svc, s3bucket, filename)
if err != nil {
return err
}
buffer := make([]byte, maxPartSize)
var completedParts []*s3.CompletedPart
for {
_, err := file.Read(buffer)
if err != nil {
if err != io.EOF {
_ = abortMultipartUpload(svc, resp)
return err
}
break
}
completedPart, err := uploadPart(svc, resp, buffer, len(completedParts)+1)
if err != nil {
_ = abortMultipartUpload(svc, resp)
return err
}
completedParts = append(completedParts, completedPart)
}
completeResponse, err := completeMultipartUpload(svc, resp, completedParts)
if err != nil {
return err
}
println(completeResponse.String())
return nil
}