Я новичок в amazon s3.In мое приложение cakephp3.0 Мне нужно скопировать файл из одного ведра в другой. Для этого я установил AWS SDK с помощью композитора и в моей функции конструктора контроллер я initilized s3 клиента с учетными даннымиAWS sdk Amazon S3 Stream Wrapper в php
public function initialize() {
parent::initialize();
$this->s3Client = new S3Client([
'version' => 'latest',
'region' => 'mumbai',
'credentials' => [
'key' => 'key',
'secret' => 'secrect',
],
]);
}
И в моей функции скопировать файл
public function amazonCopy() {
$this->s3Client->registerStreamWrapper();
$sourceBucket ="collect";
$sourceKeyname = "testFolder";
$s3Client->copyObject(array(
'Bucket' => "test1",
'Key' => testFolder,
'CopySource' => "{$sourceBucket}/{$sourceKeyname}",
));
}
}
Теперь я получаю ошибку
Error executing "ListBuckets" on " https://s3.mumbai.amazonaws.com/ "; AWS HTTP error: Error creating resource: [message] fopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known [file] /var/www/mm/Src/php/operations/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php [line] 312 [message] fopen(https://s3.mumbai.amazonaws.com/): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known [file] /var/www/mm/Src/php/operations/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php [line] 312 Aws\S3\Exception\S3Exception
Я хочу создать zip-файл с использованием данных в одном ковше и скопировать его в другое пространство без записи файла на диск с использованием потока. Какова будет причина этой ошибки? Любая помощь будет оценена.
Теперь Архивирование как поток работает должным образом, когда я использовал zipstream библиотеку для этого я использовал код
$this->s3Client->registerStreamWrapper();
$zip = new ZipStream\ZipStream('example.zip');
$zip->addFile('hello.txt', 'This is the contents of hello.txt');
$zip->addFileFromPath('happy_children-wide.jpg', 's3://mmvideo-test/Music/happy_children-wide.jpg');
$zip->addFileFromPath('txte', 's3://test/Music/test1.txt');
$zip->finish();
Но опять проблема в том, что я хочу, чтобы записать вывод молнии на лету в bucket2 , Потому что мои файлы будут содержать видео большого размера, поэтому его нельзя хранить на диске в качестве временного хранилища. он должен писать в ведро как zip на лету.
Я хочу создать zip-файл с использованием данных в одном ковше и скопировать его в другое ведро без записи файла на диск с использованием потока. –
несколько файлов в один ZIP-архив? или просто сжать каждый файл? Глядя на http://php.net/manual/en/class.ziparchive.php, похоже, что вы не можете делать это с потоками. Но вы можете сжимать отдельные файлы с помощью потоков с помощью zlib http://php.net/manual/en/ref.zlib.php – at0mzk
hi at0mzk Я хочу заархивировать несколько файлов в один ZIP-архив. Это можно использовать с zip-потоком, но я хочу это нужно написать в s3bucket, который я указал. И это происходит на лету. Теперь можно сделать zip как поток, но не возможно написать s3bucket –