php-opencloud openstack загружает изображение, но не может сохранить его в локальном файле

Используя php-opencloud, мне удается подключиться, чтобы запустить загрузку моих изображений. Большие файлы (20, 30 или 50 ГБ).

Следуя документу , с

      $image = $service->getImage($image_id);
$stream = $image->downloadData();

Я вижу, что Psr7 загружает тело запроса во временный файл /tmp/php... но я просто не могу понять, как перенаправить данные, чтобы сохранить их в постоянном локальном файле.

При использовании fopen, fwrite у меня возникла проблема нехватки памяти и

      $fp = fopen( $local_file, 'w' );
stream_copy_to_stream( $image->downloadData(), $fp );

не вызывает ошибки, но в конце $local_file по-прежнему 0 байтов.

Как я могу этого добиться?

1 ответ

Я пытался часами и знал, что это чертовски глупо:

      while( !$stream->eof() ) {
  $buffer = $stream->read( 4096 );
  fwrite( $fp, $buffer );
}

fclose( $fp );

хорошо работает

Другие вопросы по тегам