簡體   English   中英

Laravel 在本地磁盤查看圖片

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM