У меня есть некоторый код PHP, который я использую для l oop через запрос к базе данных и создаю файл CSV. Файл создается с fopen()
и загружается в конце процедуры. Нет проблем с этим. Однако в конце создания CSV я пытаюсь записать файл sh в корзину S3, используя тот же сгенерированный контент ($output
).
Сбой со следующим сообщением:
AWS Тип ошибки: сервер, AWS Сообщение об ошибке: предоставленный вами заголовок подразумевает не реализованную функциональность, User-Agent : aws -sdk-php2 / 2.7.27 Guzzle / 3.9.3 curl / 7.47.0 PHP / 7.0.33-0ubuntu0.16.04.9 добавляется в / www/MIND/gen6portal/vendor/aws/aws-sdk-php/src/Aws/Common/Exception/NamespaceExceptionFactory.php в строке 91
Я знаю, что это связано с тем, что я пытаюсь передать поток как тело клавиши S3, но я не знаю, как еще это сделать. Любые указатели приветствуются. Вот код:
$output = fopen('php://output', 'w');
while ($rows = mysqli_fetch_assoc($result)) {
fputcsv($output, $rows); // there's some more processing that I do but this works fine
}
//Now I want to upload it to S3:
$s3->putObject([
'Bucket' => 'mybucket',
'Key' => 'myfile.csv',
'Body' => $output,
'ACL' => 'public-read'
]);
fclose($output);
Достаточно интересно, что если я просто попытаюсь получить существующий файл (чтобы проверить, что у меня есть доступ к этой корзине S3), он просто отлично загрузится:
s3->putObject([
'Bucket' => 'mybucket',
'Key' => "myfile.csv",
'Body' => fopen('temp.csv', 'rb'),
'ACL' => 'public-read'
]);