stream - 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 字节。
我怎样才能做到这一点?
解决方案
我尝试了几个小时,我知道这很愚蠢:
while( !$stream->eof() ) {
$buffer = $stream->read( 4096 );
fwrite( $fp, $buffer );
}
fclose( $fp );
运行良好
推荐阅读
- python - 需要在一个类中实现Python itertools函数“chain”
- arrays - 在 Google 表格中的两个数字之间的列中填写数字
- python - 将序号添加到 Pandas 中的 groupby().head(n) 表达式
- svg - 使用设置比率时的 Gnuplot svg 终端背景框
- c - 具有 lld、ld 和 d 类型标识符的 int 变量的 printf
- html - 以 html 形式调用时未找到简单的 cgi“Hello World”
- c - 如何删除根节点作为完整树删除的一部分
- firebase - Firebase 项目初始化错误:无法列出可用的 Google Cloud Platform 项目
- javascript - 如何在 javascript、chrome 扩展中按下一个键?
- python - 使用 Numba 提取 numpy 数组中的特定行