AWS PHP SDK生成的S3预签名URL无法设置Content Disposition问题求助
AWS PHP SDK生成的S3预签名URL无法设置Content Disposition问题求助
兄弟,我之前踩过完全一样的坑!你试了好几个参数名没成功,核心问题是搞混了对象元数据参数和请求响应头参数的区别。
ContentDisposition是你上传对象(比如用putObject)时设置的对象元数据,而当你通过预签名URL获取对象时,要控制返回的响应头,得用带Response前缀的参数——也就是ResponseContentDisposition,这才是正确的参数名!
给你修正后的代码:
$request = $s3->createPresignedRequest( $s3->getCommand('getObject', [ 'Bucket' => $myBucket, 'Key' => $filename, 'ResponseContentDisposition' => 'inline' // 这个才是对的! ]), '+1 hour' );
另外还要注意一种情况:如果你的S3对象本身已经在上传时设置了ContentDisposition为attachment,那默认访问时会沿用这个元数据。这时候必须通过ResponseContentDisposition显式覆盖,才能让预签名URL返回inline的响应头,强制浏览器直接打开文件而不是下载。
我当时也是试了各种参数名,后来才反应过来AWS SDK里这类控制响应头的参数都是以Response开头的,比如ResponseContentType、ResponseContentLanguage都是同理。
内容来源于stack exchange
相关产品推荐
相关产品推荐

