我已經構建了一個laravel應用程序,我在public/files
目錄中有一些文件。如果我給這個鏈接到其他如下載鏈接,他們有機會了解我的目錄.. 假設鏈接我給的下載鏈接爲如何在給目錄鏈接時隱藏目錄?
www.abc.com/files/45454553535.zip
但我不想讓用戶知道它在文件目錄中。那麼我如何隱藏目錄?
我已經構建了一個laravel應用程序,我在public/files
目錄中有一些文件。如果我給這個鏈接到其他如下載鏈接,他們有機會了解我的目錄.. 假設鏈接我給的下載鏈接爲如何在給目錄鏈接時隱藏目錄?
www.abc.com/files/45454553535.zip
但我不想讓用戶知道它在文件目錄中。那麼我如何隱藏目錄?
將您的文件保存在storage
目錄中。這樣你就可以通過代碼向用戶提供文件。
我不知道這是否會工作或沒有,但給你的想法。創建一個php文件使用是這樣的:
header('Content-Type: application/zip');
$a=file_get_contents(file.zip)
echo $a;
從這個用戶不知道從哪裏獲取內容。
試試這個。
public function getDownload()
{
$filename='45454553535.zip'
$file= public_path(). "/files/".$filename;
$headers = array(
'Content-Type: application/zip',
);
return Response::download($file, $filename, $headers);
}
「.files/45454553535.zip」你有充分的物理路徑將無法正常工作。
更新20/05/2016
Laravel 5,5.1,5.2或5 *用戶可以使用以下的方法,而不是響應門面。不過,我以前的答案將適用於Laravel 4或5。
什麼是鏈接?這是關於控制器功能的權利? – User57
你想要什麼和文件名,所以你知道你想下載哪個文件 –
你可以創建一個你的控制器和路由。
Route::get('files/{filename}', [
'as' => 'file.get',
'uses' => '[email protected]',
]);
控制器應該檢查你的正確目錄。儘量保持您的文件存儲路徑,不公開。
class FileController extends Controller
{
private $path;
public function __construct()
{
$path = storage_path()
. '/your-valid-directory/';
}
public function get($filename)
{
$file_path = $this->path
. filter_var($filename, FILTER_SANITIZE_STRING);
if (file_exists($file_path) && is_readable($file_path)) {
return response(file_get_contents($file_path), 200, [
'Content-Type: application/zip',
]);
} else {
abort(404);
}
}
}
現在您可以通過訪問特定文件:
{{ route('file.get', ['filename' => '45454553535.zip') }}
這個動作產生鏈接看起來像:your-domain.com/files/45454553535.zip。 :)
無論如何,在我看來 - 在未來只是使文件工廠具有特定的標題,目錄。
祝你好運!
可能重複[Laravel:如何隱藏url參數?](http://stackoverflow.com/questions/39951509/laravel-how-to-hide-url-parameter) –