Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services PHP AWS S3-使用内容处置下载文件,无需流式处理_Amazon Web Services_Amazon S3_Drupal 8 - Fatal编程技术网

Amazon web services PHP AWS S3-使用内容处置下载文件,无需流式处理

Amazon web services PHP AWS S3-使用内容处置下载文件,无需流式处理,amazon-web-services,amazon-s3,drupal-8,Amazon Web Services,Amazon S3,Drupal 8,我在一个公共S3存储桶上有一些视频,我需要为它们创建一个下载链接 最初,我打算使用Guzzle从公共链接获取文件,并添加标题内容配置,以便将文件推送到 浏览器 $client->get('s3/path'); $client = $client->withAddedHeader('Content-Disposition', 'attachment; filename=' . $videoName); return $client; 然而,DevOps团队告诉

我在一个公共S3存储桶上有一些视频,我需要为它们创建一个下载链接

最初,我打算使用Guzzle从公共链接获取文件,并添加标题内容配置,以便将文件推送到 浏览器

    $client->get('s3/path');
    $client = $client->withAddedHeader('Content-Disposition', 'attachment; filename=' . $videoName);
    return $client;
然而,DevOps团队告诉我,这将给我们的服务器带来不必要的压力,并找到另一种方法

我知道我可以直接在bucket中的文件上设置contentdisposition头,但是有没有办法在访问公共链接时设置这个头呢?如果没有,是否可以对bucket中的文件夹设置策略,以便始终将内容处置添加到上载到其中的文件

我还应该提到,为了上传,我使用了Drupal 8模块S3FS和一个文件字段,这意味着我无法访问上传过程来设置上传时的标题。但是,上传后是否可以更新标题

我知道我可以直接在文件上使用内容处置头 在bucket中,但是有没有一种方法可以将其设置为访问 公共链接

是的,但您必须创建一个预签名的URL并覆盖内容处置头。以下是一个修改后的示例:

//Creating a presigned URL
$cmd = $s3Client->getCommand('GetObject', [
    'Bucket' => 'my-bucket',
    'Key'    => 'testKey',
    'Content-Disposition' => ''
]);

$request = $s3Client->createPresignedRequest($cmd, '+20 minutes');

// Get the actual presigned-url
$presignedUrl = (string) $request->getUri();