#S3 #AWS #Go言語 #LocalStack
[[AWS SDK for Go V2]]で画像を登録する方法。
`your-bucket-name`バケット配下が以下の構造になっているとする。
```ls
- your-bucket-name (バケット名)
- path-from-bucket-root
```
以下のコードで取得できる。
```go
// bodyは []byte
mimeType := http.DetectContentType(body)
_, err := c.client.PutObject(context.TODO(), &s3.PutObjectInput{
Bucket: aws.String(c.bucketName),
Key: aws.String(path),
Body: bytes.NewReader(body),
ContentType: aws.String(mimeType),
CacheControl: aws.String("no-cache"),
})
if err != nil {
log.Fatal(err)
}
```
- `ContentType`を指定しないとすべて`application/octet-stream`として扱われるので注意
- `http.DetectContentType(body)`でデータから[[Content-Type]]を推論できる
## 参考
- [goでデータ形式を識別するためのMIMEタイプを判定する方法 : ビジネスとIT活用に役立つ情報](https://www.asobou.co.jp/blog/web/go-mime)