2016-04-07 84 views
0

假設我有一臺設備知道他們想從我的服務器下載的文件的名稱。PHP文件傳輸

如何在不給設備訪問文件系統的情況下將所述文件傳輸到該設備?

例如,假設我有收到「something.zip」

ping.php知道something.zip的位置(在某個服務器的文件系統)的GET請求一個頁面ping.php,但我不能讓用戶訪問文件系統,或者讓他們知道文件的位置(甚至需要使用諸如wireshark之​​類的東西來隱藏它)。

我該如何解決這個問題?

這可能是一個簡單的解決方案,我只是沒有非常精通這些問題。

如果它有什麼區別,我將在Linux上使用Apache服務器。

+0

這實際上的標準方式文件下載實現的是:你發送HTTP描述文件頭和然後是由php腳本生成的響應內的文件內容。就這樣。 – arkascha

回答

3

您可以創建一個PHP腳本,以便在文件位於無法通過Web訪問的文件夾中時進行文件傳輸。這是我通常在我的系統上處理文件下載的方式。

有任何數量的示例腳本可用於執行實際的文件傳輸。關鍵是將該文件放在網絡可訪問的文件系統之外。

爲了完整起見,這裏的一些代碼,我已經在過去用來做文件下載在PHP中:

$filename="filetodownload.xyz"; 
$cf = realpath("/non-webaccessible-folder/".$filename); 
$file=$cf; 

header('Content-Disposition: attachment; filename="' . basename($cf) . '"'); 
header("Content-Length: " . filesize($cf)); 
header("Content-Type: application/octet-stream"); 
readfile(realpath($cf)); 
+0

對不起......我從製作腳本中搶走了這個,並忘記將它刪除。它在我的情況下是必要的。 – LuvnJesus

+0

謝謝!這似乎是我需要的。雖然有些事情對我來說並不是很清楚。參見[這個新問題](http://stackoverflow.com/questions/36499625/php-file-transfer-how-does-this-work) – JEJoll