2012-07-08 68 views
1

我目前有幾個服務器,主要是一個Web服務器和一個內部存儲服務器。數據存儲在SQL服務器數據庫中。PHP不同的服務器和安全

沒有給用戶太多訪問權限,我如何從存儲服務器上拉出特定的文檔,以便從Web服務器向用戶顯示?

例如,我在存儲服務器上有文檔c:/memberID/info.pdf,我想通過PHP將它顯示給客戶端,而不讓他們訪問內部存儲服務器。

我希望這是有道理的!如果存儲服務器被安裝在Web服務器或文件是可以私下通過HTTP

回答

1

查找到readfile以及headers

<?php 
$file = 'monkey.gif'; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
} 
?> 
+0

這隻會工作。 – tftd 2012-07-08 22:59:54

+0

我可以通過\\服務器從網絡服務器訪問存儲服務器。 我的文件以\\ server \ memberno.pdf的形式存儲在數據庫中 - 我想將鏈接顯示爲'document.pdf'。我怎樣才能做到這一點? – user1138694 2012-07-08 23:26:56

+0

只需更改變量'$ file'以包含您想要服務的文件的路徑:'$ file ='\\ server \ memberno.pdf''(確保在必要時適當地轉義)。 tftd,我知道只適用於可訪問的文件,但我的理解是這些文件可以從網絡服務器上獲得。 – Fabrizio 2012-07-09 12:09:55