2009-10-28 76 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打開它