[英]Laravel viewing picture in local disk
我正在為學校項目制作一個 Dropbox 克隆,我制作了一個上傳功能,可以上傳到本地磁盤,因此每個人都無法訪問它。
上傳Function
public function updatedUpload($upload){
$object = $this->currentTeam->objects()->make(['parent_id' => $this->object->id]);
$object->objectable()->associate(
$this->currentTeam->files()->create([
'name' => $upload->getClientOriginalName(),
'size' => $upload->getSize(),
'path' => $upload->storePublicly('files', ['disk' => 'local'])
])
);
$object->save();
$this->object = $this->object->fresh();
}
但我想把它放在 home.blade 中。
我如何制作這個並且只有上傳它的人才能訪問它?
您可以為可以查看此資源的用戶創建特定鏈接。
例如在您的routes/web.php
Route::get('/private_resource',[\App\Http\Controllers\PrivateResource::class, 'getLocalResource'])
->name('get_private_resource')->middleware('auth');
定義PrivateResource
controller
class PrivateResource
{
public function getLocalResource($filename){
// Get your resource, for example
$file = File::where('name', $filename)->first();
// Check whether user can access this resource
// For example
if(\Auth::id() != $file->user_id) abort(403);
return \Storage::disk('local')->download($filename);
}
}
額外:如果您想要額外的隱私,您可以使用以下 function 的簽名路由。
\URL::signedRoute('get_private_resource');
並將signed
的中間件添加到您的路由中
Route::get('/private_resource',[\App\Http\Controllers\PrivateResource::class, 'getLocalResource'])
->name('get_private_resource')->middleware('auth','signed');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.