Php 而不是文件下载获取当前页面的转储

Php 而不是文件下载获取当前页面的转储,php,Php,我正在强制下载一个文件。它是一个xml文件。问题是,当我下载它时,该文件包含启动下载的当前页面的html转储 文件:/bitrix/modules/export/admin/export.php $name='market'.date('Y-m-d-H-i-s').'.yml'; $file='/bitrix/modules/export/export/'.$name; $filename=$_SERVER["DOCUMENT_ROOT"].$file; $fp=fopen($filen

我正在强制下载一个文件。它是一个xml文件。问题是,当我下载它时,该文件包含启动下载的当前页面的html转储

文件:/bitrix/modules/export/admin/export.php

 $name='market'.date('Y-m-d-H-i-s').'.yml';
 $file='/bitrix/modules/export/export/'.$name;
 $filename=$_SERVER["DOCUMENT_ROOT"].$file;
 $fp=fopen($filename,"wb");
 /*
 *
 * Here goes some generating script
 *
 */
 fclose($fp);
 header('Content-disposition:attachment;filename="'.$name.'"');
 header('Content-type: application/svg+xml');
 readfile(realpath($file));

当下载脚本包含空行、不同代码等时,很难使其正常工作。在生成文件后发布文件名应该可以正常工作。下载脚本示例:

<?php
if ( isset ( $_REQUEST[ 'filename' ] ) ) {
  $FileName       = $_REQUEST[ 'filename' ];
  $DownloadFolder = "MyDowloads";
  status_header( 200 );
  header( "Content-type: application/force-download" );
  header( 'Content-type: application/svg+xml' );
  $saveas = $FileName;
  header( "Content-Disposition: attachment; filename=\"$saveas\"" );
  readfile( $DownloadFolder . $FileName );
}
?>


希望这能有所帮助。

您已经删除了实际写入文件的所有代码。我假设你在那里做了些什么,你得到的不仅仅是YML文件。我也没有看到下载@ernie我删掉了这一点,因为服务器上的文件生成正确。但当它强制下载时,文件的内容是其他的(如我所写的页面转储)。此时最好的猜测是,
realpath($file)
没有指向正确的位置,因此,该行之后的所有内容都将使用您手动设置的标题发送。尝试将“readfile(realpath($file));”更改为“readfile($filename);”,以防重新分配$file变量。如果这是你用fopen写的文件,那么readfile也会工作(如果fopen工作,则不需要realpath)@Robbie thx,但它对我不起作用。仍然将页面转储到该文件中(