2009-10-28 79 views
3

我生成一个文件来呈现给用户下载,但服务器并没有让我打开它,因为它需要有权限777之前,它可以这样做。在PHP中强制下载之前设置文件权限?

这里是我的代码

$fh = fopen("$name", 'w') or die("can't open file"); 
fwrite($fh, $data); 
fclose($fh); 

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Length: ". filesize("$name").";"); 
header("Content-Disposition: attachment; filename=$name"); 
header("Content-Type: application/octet-stream; "); 
header("Content-Transfer-Encoding: binary"); 

readfile($name); 

任何方式之前,我打开它之前设置的这个权限,或如何将我去这样做?该文件还没有创建,所以它可能是一个无限循环。我应该制作文件,然后打开它,或者是什么?

+2

为什么不直接使用'echo $ data'?或者你还需要该文件还有其他的东西? – 2009-10-28 17:38:01

+1

Lukas Lalinsky是对的。你应该在你的头文件后将数据发送给用户。它不会将它写入您的服务器以保存您的硬盘。 – elviejo79 2009-10-28 17:40:09

回答

3

如果您不需要您正在编写的临时文件$ name,那么只需将其直接流出即可,而无需创建文件。

您可以改为输出所有标题并回显输出。

+0

完成!谢谢!!!! – mrpatg 2009-10-28 17:46:01

1

如果文件名是固定的,那么

  • 创建服务器一个空文件
  • 设置其权限。
  • 从php打开它