2017-07-25 8 views
1

私は/ projects /(nameofproject - 必ずしも同じではない)/header.jpgと/ projects /(nameofproject - 必ずしも同じではない)/home.pngを持っています。Laravelストレージへのシンボリックリンクと写真を表示

私の見解ではどのように表示できますか?

私はもう少し説明します。 これまで、私は/ public/assets/img/projectsのプロジェクトを持っていましたが、今は動的に行います。

新しいプロジェクトを作成し、画像を保存するためにMy機能はこれです:私は、過去に私はこれでそれを表示しないプロジェクトの

public function storeProject(Request $request) 
     { 
     $project = new Project(); 
     $project->slug = $request->input("slug"); 
     $project->position = $request->input("position"); 
     $project->public = $request->input("public"); 
     $project->pathheader = $request->file('pathheader'); 
     $project->pathhome = $request->file('pathhome'); 
     \Storage::disk('projects')->makeDirectory($project->slug); 
     \Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.png'); 
     \Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.png'); 
     $project->save(); 
     return redirect('/admin/projects'); 

     } 

画像:(私はビューに変数$を渡しますプロジェクト)

<p class="lead"><img src="/assets/img/projects/{{$project->slug}}/header.jpg" width="50%" >Header</p> 
<p class="lead"><img src="/assets/img/projects/{{$project->slug}}/home.jpg" width="50%">Home</p> 

保存フォルダのイメージを表示するにはどうすればいいですか?

EDIT

filesystems.phpコード:

'projects' => [ 
      'driver' => 'local', 
      'root' => storage_path() . '/projects', 
      'visibility' => 'public', 
     ], 

Viewは今、このように見える:

@if (Storage::disk('projects')->has($project->slug)) 
<img src="{{ asset('storage/projects/'.$project- 
>slug.'/header.jpg') }}" width="50%" > 
@else 
<p class="lead"><img src="/assets/img/projects/{{$project- 
>slug}}/header.jpg" width="50%" >Header</p> 
@endif 

は私が作る:

PHPの職人ストレージ:リンク

画像のURL:http://url.loc/storage/projects/hola-que-tal/header.jpg(表示しないでください)。

+0

https://stackoverflow.com/questions/40936332/laravel-link-to-a-file-saved-in-storage-folder – Bas

+0

@Bas "ローカルドライバを使用している場合は、 public/storage/storage/app/publicディレクトリに置くべきです。また、storage/app/publicディレクトリを指すpublic/storageにシンボリックリンクを作成する必要があります。/storage/projects/$ foldername(変数) –

答えて

1

最も簡単な解決策は、public diskを使用することです。 config/filesystems.php

<p class="lead"><img src="{{ asset('storage/projects/'.$project->slug.'/header.jpg') }}" width="50%" >Header</p> 
<p class="lead"><img ssrc="{{ asset('storage/projects/'.$project->slug.'/home.jpg') }} width="50%">Home</p> 

設定のための例:

\Storage::disk('public')->makeDirectory($project->slug); 
\Storage::disk('public')->putFileAs($project->slug, $project->pathheader, 'header.png'); 
\Storage::disk('public')->putFileAs($project->slug, $project->pathhome, 'home.png'); 

そして、あなたのHTML:あなたはphp artisan storage:linkコマンドを実行した場合は、次のコードを使用することができます。もちろん、

'public' => [ 
    'driver' => 'local', 
    'root' => storage_path('app/public/projects'), 
    'url' => env('APP_URL').'/storage', 
    'visibility' => 'public', 
], 

することができますprojectsディスクを編集して、正しいrootを持つようにします。しかし、私はあなたの設定がprojectsディスクをどのように探すか分かりません。

+0

こんにちは@ Dees040私はパブリックディスクを使用することはできません、これは問題です。私は何かをしようとしているかもしれません。私は質問の底を編集する。チャットの方法を知っているなら、好きなようにしてください: –

+0

Question編集済み –

+0

'/ {{$ project-> slug}}'をそのまま文字列として送ります。これは 'Storage :: disk( 'projects') - > has($ project-> slug)'でなければなりません。しかし、フォルダが存在するかどうかを確認します。たぶん、ファイル名も追加する必要がありますか?私はあなたが何を達成しようとしているのか分かりません。 –

関連する問題