S3のファイルの署名付きURLを発行してDLさせる際、ファイル名を指定したい
SetResponseContentDispositionを使用して attachment
と filename
を設定する。
Content-DispositionとはHTTPのレスポンスヘッダの一つ。主にブラウザが対象のリソースをどのように処理するかを指定するために使用する。
attachment
はダウンロードすべきファイルであることを明示し、 filename
はそのデフォルトのファイル名を指定することができる。
※aws-sdk-goのセットアップは完了しているものとする
func (repo *repository) GetPresignedURLWithFileName(bucketName string, filePath string, fileName string) (*url.URL, error) {
svc := repo.s3
input := &s3.GetObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(filePath),
}
// content-dispositionを設定
input.SetResponseContentDisposition(fmt.Sprintf("attachment; filename=\"%s\"", fileName))
req, _ := svc.GetObjectRequest(input)
// 署名付きURL生成
urlStr, err := req.Presign(10 * time.Minute)
if err != nil {
repo.logger.Errorf("%v", err)
return nil, err
}
parsedURL, err := url.Parse(urlStr)
if err != nil {
repo.logger.Errorf("%v", err)
return nil, err
}
return parsedURL, nil
}
富山在住のプログラマー。
フルリモートで働いています。
Categories
AWS
Cloudflare
Docker
Github
go
html
JavaScript
microCMS
MySQL
Monthly Archives
2024/12 (1)
2024/11 (3)
2024/10 (1)
2024/09 (3)
2024/08 (7)
2024/07 (7)
2024/06 (4)
2024/05 (5)
2024/04 (6)