Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 生成和下载CSV流不支持查找(非远程)_Php - Fatal编程技术网

Php 生成和下载CSV流不支持查找(非远程)

Php 生成和下载CSV流不支持查找(非远程),php,Php,我正试图让我的代码以.csv格式下载文件,我确实做到了这一点,它工作得很好,除了它包含一个包含(#Resource ID XX)的附加字段外,我不想这样做。我浏览了一下,读了很多答案,说应该使用下面的代码: $fp = fopen('php://output', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } rewind($fp); $output = stream_get_contents($fp);

我正试图让我的代码以.csv格式下载文件,我确实做到了这一点,它工作得很好,除了它包含一个包含(#Resource ID XX)的附加字段外,我不想这样做。我浏览了一下,读了很多答案,说应该使用下面的代码:

$fp = fopen('php://output', 'w'); 


foreach ($list as $fields) {
    fputcsv($fp, $fields);
} 

rewind($fp);
$output = stream_get_contents($fp);
fclose($fp);

这给了我以下错误:
rewind():流不支持在第30行的/var/www/opencart/admin/model/catalog/upload.php中查找,据我所知,这通常是因为fopen用于外部的东西,我不相信我的。所以我不确定问题出在哪里?

根据我的经验,
rewind()
不适用于
php://output
,但它与
php://memory

如果您的计划是抓取反输出,以便稍后进行强制下载,那么您不需要倒带流;用
stream\u get\u contents()
阅读就足够了

最后的代码应该是

$fp = fopen('php://output', 'w'); 

foreach ($list as $fields)
{
    fputcsv($fp, $fields);
} 

$output = stream_get_contents($fp);

fclose($fp);

那么为什么要执行
倒带()
$output=stream\u get\u contents($fp)?除非你打算用$OUUT做点什么,否则它们是多余的,
php://output
正在将数据发送到输出流(如果是web请求,则有效地发送到客户端浏览器),因此应将其视为外部。。。。一旦您开始向浏览器发送数据,如何将其回调并更改?我使用带有标题的输出稍后下载文件。我还以为php://output 也可能是外部的,但另一篇帖子建议将其作为我正在考虑的问题的解决方案
php://output
等同于echo:除非您也使用输出缓冲,否则它将发送到浏览器(用于web请求)。如果需要添加标题,请在将数据发送到
php://output
,或者使用临时文件,或者输出缓冲区,我认为它会缓存它,我不认为这是一个web请求