2012-07-09 153 views
0

我目前將docx文件和pdf文件存儲在doc根外的用戶上傳文件夾中。我打算通過db鏈接將這些文件下載到繁重的文件名中。從文檔根目錄以外獲取文件。 PHP

此前,我只使用PHP從根目錄以外的文件獲取數據 - 是否有可能從這個區域檢索整個文件,如果有的話,如何做到這一點。

+1

使用符號鏈接。 – 2012-07-09 15:23:27

+0

如果我有一個doc文件根之外的上傳文件,我將如何使用符號鏈接來訪問此文件。我是否理解符號鏈接掩蓋了原始文件路徑? – Sideshow 2012-07-09 20:28:35

+0

是的......我們可以說他們*掩蓋*原始文件路徑。但重要的是,它們允許您在不更改文件路徑的情況下訪問資源。例如,如果您在*〜/ myproject_root/uploads *中創建了一個到*〜/ myfolder *的符號鏈接,則人們將能夠訪問* myfolder *內容,就好像它真的在項目根目錄中一樣。 – 2012-07-09 21:38:53

回答

1
<?php 

$file_id = $_GET['id']; 

$local_path = get_real_filelocation_from_id($file_id); 

readfile($local_path); 

get_real_filelocation_from_id()代碼留作一個練習OP。

+0

您忘了設置mimetype(請參閱readfile的文檔示例) – symcbean 2012-07-09 15:49:46

0
<?php 
$get_file=$_GET['file_name']; 
$file = '/path/to/uploads/'.$get_file; 

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; 
} 
?> 

經過許多小時的搜索,我發現這似乎工作。不幸的是,雖然符號鏈接根似乎是一條很好的路徑,但我不確定如何真正實現它 - 當我嘗試甚至是最基本的腳本時,螢火蟲進入怪癖模式。