我目前將docx文件和pdf文件存儲在doc根外的用戶上傳文件夾中。我打算通過db鏈接將這些文件下載到繁重的文件名中。從文檔根目錄以外獲取文件。 PHP
此前,我只使用PHP從根目錄以外的文件獲取數據 - 是否有可能從這個區域檢索整個文件,如果有的話,如何做到這一點。
我目前將docx文件和pdf文件存儲在doc根外的用戶上傳文件夾中。我打算通過db鏈接將這些文件下載到繁重的文件名中。從文檔根目錄以外獲取文件。 PHP
此前,我只使用PHP從根目錄以外的文件獲取數據 - 是否有可能從這個區域檢索整個文件,如果有的話,如何做到這一點。
<?php
$file_id = $_GET['id'];
$local_path = get_real_filelocation_from_id($file_id);
readfile($local_path);
爲get_real_filelocation_from_id()
代碼留作一個練習OP。
您忘了設置mimetype(請參閱readfile的文檔示例) – symcbean 2012-07-09 15:49:46
<?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;
}
?>
經過許多小時的搜索,我發現這似乎工作。不幸的是,雖然符號鏈接根似乎是一條很好的路徑,但我不確定如何真正實現它 - 當我嘗試甚至是最基本的腳本時,螢火蟲進入怪癖模式。
使用符號鏈接。 – 2012-07-09 15:23:27
如果我有一個doc文件根之外的上傳文件,我將如何使用符號鏈接來訪問此文件。我是否理解符號鏈接掩蓋了原始文件路徑? – Sideshow 2012-07-09 20:28:35
是的......我們可以說他們*掩蓋*原始文件路徑。但重要的是,它們允許您在不更改文件路徑的情況下訪問資源。例如,如果您在*〜/ myproject_root/uploads *中創建了一個到*〜/ myfolder *的符號鏈接,則人們將能夠訪問* myfolder *內容,就好像它真的在項目根目錄中一樣。 – 2012-07-09 21:38:53