gpt4 book ai didi

php - 单击 preSignedRequest 链接时,AWS S3 强制下载文件

转载 作者:行者123 更新时间:2023-12-03 09:05:45 24 4
gpt4 key购买 nike

我正在使用 AWS S3 为文件生成 createPresignedRequest()。当用户单击在新窗口中打开的链接时,我希望它强制下载。我可以做些什么来启用此功能吗?我已经查看了文档,但没有看到我需要的东西。

这是我创建网址的代码:

 $s3 = new S3Client([
'credentials'=>[
'key'=>$key,
'secret'=>$secret,
],
'region'=>'us-west-2',
'version'=>'2006-03-01',
]);
$cmd = $s3->getCommand('GetObject', [
'Bucket' => $buckname,
'Key' => $file,
]);
$request = $s3->createPresignedRequest($cmd, '+7 days');
$secureUrl = (string) $request->getUri();
echo $secureUrl; // When the user clicks on the link - how can I force download the file instead of open in a new window.

最佳答案

您可以在生成预签名 URL 时强制下载,方法是添加 ResponseContentDisposition GetObject参数。

'ResponseContentDisposition' => '<string>',

这会指示 S3 设置 Content-Disposition 值为 <string> 的响应 header 当使用签名 URL 时。对象保持不变。

用于 '<string>' 的值可以是以下之一:

'attachment'
'attachment; filename="some-filename.jpg"'

第二个示例将导致大多数浏览器使用您指定的名称保存文件,而不是其在 S3 中的名称。 ; 后面有一个空格在单词attachment之后.

执行此操作时,您会注意到签名的 URL 现在包含 &response-content-dispositon=... S3 API Reference 中提到.

或者,您可以设置 Content-Disposition当您将对象上传到 S3 时,将其设置为所需的值,这将自动出现在所有下载中。

关于php - 单击 preSignedRequest 链接时,AWS S3 强制下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47601960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com