1
我不希望用戶可以通過簡單地使用像http://laravel.dev/123.jpg這樣的URL訪問圖像。因此,我將所有圖像存儲在存儲目錄中,而不是將它們存儲在公用文件夾中。使用Laravel 5和刀片顯示安全圖像
有了這樣
public function show($id) {
$img = storage_path('my_images/123.jpg');
return response()->download($img, null, [], null);
}
圖像的控制器被正確地通過Laravel 5顯示,雖然它是從公用文件夾存儲外部。
非常好,但是我想要使用Blade並用一些更多細節來包圍圖像。因此,我控制器看起來像這樣
public function show($id) {
$picture = Picture::find($id);
$img = storage_path('my_images/123.jpg');
return view('pictures.show', array('picture' => $picture, 'img' => $img));
}
和視圖這樣
<!DOCTYPE html>
<html>
<head>
<title>Picture {{ $picture->id }}</title>
</head>
<body>
<h1>Picture {{ $picture->id }}</h1>
<ul>
<li>Name: {{ $picture->name }}</li>
<li>Description: {{ $picture->description }}</li>
</ul>
<img src="{{ $image }}">
</body>
</html>
這顯然是行不通的,因爲圖像的位置是不能公開訪問(其中北京時間意向)。
我必須使用什麼來代替<img src="{{ $image }}">
才能完成這項工作?
,沒有工作!謝謝。 我不喜歡這個解決方案的唯一的事情是,客戶端實際上會調用服務器兩次 - 第一次爲整個頁面,第二次爲檢索圖像。 是不是有一種方法可以像「」那樣簡單地將圖像轉換爲二進制類型而不是提供源代碼? – Steevie
事實上,您在頁面中託管的任何資源(圖像,css,js)都是這種情況,客戶端會爲每個請求提出另一個服務器請求。 –
非常感謝! – Steevie