Скачать большие файлы с s3 через php - PullRequest
1 голос
/ 03 февраля 2020

Мне удалось загрузить большие файлы в s3 с помощью MultiPart Upload, но я не могу загрузить их снова с помощью функции getObject. Есть ли другой способ добиться этого?

Вот мой код:

  $keyname= 'key';
  $bucket = 'bucketname';
  $fileName = 'filename.txt';

  $result = $s3->getObject([
      'Bucket' => $bucket,
      'Key'    => $keyname
  ]);

  var_dump($fileName);
  $result['ContentDisposition'] = 'attachment; filename="'.$fileName.'"';

  $result['fileName'] = $result['ContentDisposition'];
  header("Content-Type: {$result['ContentType']}");
  header("Content-Disposition: {$result['ContentDisposition']}");
  header("Content-Length: {$result['ContentLength']}");
  echo $result['Body'];

Спасибо за помощь. Это мое решение:

  $keyname= 'key';
  $bucket = 'bucketname';
  $fileName = 'filename.txt';

  #create S3 Client
  $s3 = new S3Client([
      'version' => 'latest',
      'region'  => 'eu-central-1',
      'credentials' => [
      ]
  ]);

      $cmd = $s3->getCommand('GetObject', [
          'Bucket' => $bucket,
          'Key' => $keyname,
          'ResponseContentDisposition' => 'attachment; filename="'.$fileName.'"'
      ]);

      $request = $s3->createPresignedRequest($cmd, '+15 min');
      $presignedUrl = (string)$request->getUri();

      echo $presignedUrl;

, после этого я загружаю его в свой веб-интерфейс с тегом через js

1 Ответ

1 голос
/ 03 февраля 2020

вы можете создать предустановленное соединение с S3 следующим образом

$keyname= 'key';
$bucket = 'bucketname';
$fileName = 'filename.txt';

$command = $s3->getCommand('GetObject', array(
       'Bucket' => $bucket,
       'Key'    => $keyname  
       'ResponseContentDisposition' => 'attachment; filename="'.$fileName.'"'
));

$signedUrl = $command->createPresignedUrl('+15 minutes');
header('Location: '.$signedUrl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...