2013-05-26 41 views
-1

我们希望支持我们的php页面上的一个功能,当用户点击页面上的按钮时,我们会自动生成一些数据到文件中,并将文件下载到客户端。很多网站今天都有这样的功能(例如,下载chrome映像安装在客户端机器上),如何在php中实现?如何添加支持在php页面上下载文件?

回答

1

你的要求有点含糊(“生成一些数据”),但它会是这样的。我是ass-u-ming你的数据来自SQL查询:

<?php 

header("Content-type: text/plain"); 
header("Content-Disposition: attachment; filename=YOUR_EXPORT.txt"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
$fp = fopen('php://output', 'w'); 

$your_query = mysql_query("select * from bla bla bla ... "); 
while($codes = mysql_fetch_array($your_query)) { 
    $row = array(); 
    $row[] = some data ... 
    fputs($fp, $row); 
} 
fclose($fp); 
0

用按钮你的PHP页面,有按键触发打开你要编写并发送到浏览器进行下载(例如.CSV文件)的文件:

  <html> 
      <head> 
       <!-- Using jquery --> 
       <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
       <script> 
        $("#download_file").click(function(){ 
         window.open("generate_a_csv_file.php","_blank"); 
        }); 
       </script> 
      </head> 

      <body> 
       <input type="button" value="Download CSV File"> 
      </body> 
      </html> 

然后创建另一个PHP文件,将生成的内容,用头来告诉浏览器发送的内容作为文件(在这个例子中一个名为“example_file.csv”文件会下载生成):

<?php 

    header('Content-disposition: attachment; filename=example_file.csv'); 
    header('Content-type: application/force-download'); 

    echo "line1,abc,123"."\r\n"; 
    echo "line2,xyz,456"."\r\n"; 

    ?> 

注意:确保你不输出任何高于“标题”行的内容。标题必须在其他任何内容之前输出。

+0

谢谢!但是如何触发#download_file?我的意思是我没有看到按钮和脚本之间的连接... – bcbishop