首页 > 解决方案 > php-opencloud openstack 下载图像但无法将其保存在本地文件中

问题描述

使用 php-opencloud,我设法连接以触发我的图像下载。大文件(20、30 或 50 GB)。

按照文档,与

$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 字节。

我怎样才能做到这一点?

标签: streamopenstackphp-opencloud

解决方案


我尝试了几个小时,我知道这很愚蠢:

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

fclose( $fp );

运行良好


推荐阅读