func uploadFileToS3()

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
}