golang 代码实现下载网络图片到aws并从aws访问
时间: 2024-06-09 15:05:09 浏览: 152
下面是一个简单的示例代码,它使用 Go 编程语言实现从网络下载图片并将其上传到 AWS S3 存储桶中,然后从存储桶中访问图片。在运行此代码之前,请确保您已经安装了 AWS SDK for Go 和 Go 的其他依赖项。
```go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"os"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
func main() {
// 下载图片
resp, err := http.Get("https://example.com/image.jpg")
if err != nil {
fmt.Println("Error downloading image:", err)
return
}
defer resp.Body.Close()
// 读取图片数据
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading image data:", err)
return
}
// 创建 AWS S3 会话
sess, err := session.NewSession(&aws.Config{
Region: aws.String("us-west-2"), // 替换为您的实际区域
})
if err != nil {
fmt.Println("Error creating AWS session:", err)
return
}
// 将图片上传到 S3 存储桶
svc := s3.New(sess)
_, err = svc.PutObject(&s3.PutObjectInput{
Bucket: aws.String("my-bucket"), // 替换为您的实际存储桶名称
Key: aws.String("image.jpg"), // 替换为您想要为图片设置的键名称
Body: bytes.NewReader(data),
})
if err != nil {
fmt.Println("Error uploading image to S3:", err)
return
}
// 从 S3 中访问图片
url := fmt.Sprintf("https://s3-%s.amazonaws.com/%s/%s", *sess.Config.Region, "my-bucket", "image.jpg") // 替换为您的实际存储桶名称
fmt.Println("Image URL:", url)
}
```
请注意,此示例代码假设您已经正确配置了 AWS SDK for Go 和您的 AWS 凭证。如果您还没有配置这些内容,请参考 AWS SDK for Go 文档中的说明进行操作。
阅读全文