在php中动态创建和下载文件

时间:2011-05-19 06:43:25

标签: php header

我正在动态创建一个Excel文件(来自数据库的数据)。在调用URL时它工作正常,它显示下载对话框。但是每当我使用CURl函数调用此URL时,我想动态地将此文件保存在文件夹中(即在我的服务器硬盘中)。 如何设置标题,以便创建Excel文件并将其保存在文件夹中。 我正在使用的标题代码,

<?php
   $name = "myFile";
   $file_ending = "xls";
   header("Content-type: application/octet-stream");
   header("Content-Disposition: attachment; filename={$name}.{$file_ending}");
   header("Pragma: no-cache");
   header("Expires: 0"); 

   echo "the data...";
?> 

还是有其他方法可以这样做。 注意 - 我想这样,因为,这个功能将由Web服务器调度程序调用。

2 个答案:

答案 0 :(得分:4)

您无法通过设置标题来保存某些特定路径中的内容。 HTTP标头专门用于帮助跨HTTP网络连接传输数据,该网络连接对文件系统一无所知。

也许你只想要write the data into a file而不是?

file_put_contents('file.xls', "the data...");

答案 1 :(得分:0)

很容易

创建一个空目录,让我们称之为“下载”

使用以下

在“downloads”目录中创建.htaccess文件
Options +SymLinksIfOwnerMatch
IndexIgnore */*
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . dummy.php

在名为dummy.php的“downloads”目录中创建一个文件

<?php
  param = $_Get["param"];
  echo "The file contents, echo anything you want"
?>

通过保持目录为空,每次找不到文件时,都会调用dummy.php

您希望用户下载的任何文件,请将它们指向/ downloads / any_madeup_filename