2017-04-24 20 views
1

私はLaravel 5.4を学習していますが、今は画像をアップロードしてアップロード画像をhtmlに表示しようとしています。Laravel 5.4画像をアップロードしました

ファイルが正常にアップロードされたようですが、画像をHtmlに表示すると、画像に404エラーが表示され、何も表示されません。

これは私の設定とコードである:私は私のパブリックフォルダへのシンボルリンクを作っ

public function store(Request $request) 
    { 
     $this->validate($request, [ 
      'name' => 'required|string|max:255', 
      'desc' => 'required|string', 
      'width' => 'required|numeric', 
      'height'=> 'required|numeric', 
      'artist'=> 'required|exists:artists,id', 
      'photo' => 'required|file' 
     ]); 

     $artistInfo = Artist::find($request->artist); 

     $fileExtension = $request->file('photo')->extension(); 

     $originalFileName = $request->file('photo')->getClientOriginalName(); 

     $filePath = Storage::putFile('public', $request->file('photo'), 'public'); 


     Photo::create([ 
      'name'  => $request->name, 
      'origName' => $originalFileName, 
      'url'  => $filePath, 
      'artist_id' => $request->artist, 
      'desc'  => $request->desc, 
      'width'  => $request->width, 
      'height' => $request->height 
     ]); 

     return $filePath;//this for test 
    } 

そして、私のブレード:

   @forelse($photos as $photo) 
        <tr> 
         <td>{{ $photo->name }}</td> 
         <td> 
          <img class="img" src="{{ asset('public/storage/' . $photo->url) }}" alt="{{ $photo->name }}" /></td> 
         <td>{{ $photo->artist->name . ' ' . $photo->artist->family }}</td> 
         <td>{{ $photo->desc }}</td> 
         <td>{{ $photo->width }}</td> 
         <td>{{ $photo->height }}</td> 
         <td class="text-center"> 
          <a href="{{ route('artists.edit', ['id' => $photo->id]) }}"> 
           <i class="material-icons">edit</i> 
          </a> 
         </td> 
         <td class="text-center"> 
          <a href="{{ route('artists.edit', ['id' => $photo->id]) }}"> 
           <i class="material-icons">assignment_turned_in</i> 
          </a> 
         </td> 
        </tr> 
       @empty 
        <tr> 
         <td>There's no photo Yet</td> 
         <td>&mdash;</td> 
         <td>&mdash;</td> 
         <td>&mdash;</td> 
         <td>&mdash;</td> 
        </tr> 
       @endforelse 

NOTE php artisan storage:linkを使用し、symlinkはfiを動作させますこれらのマナー

<img class="img" src="{{ asset('public/storage/' . $photo->url) }}" alt="{{ $photo->name }}" /></td> 

をしてみました::

<img class="img" src="{{ asset(storage_path() . ($photo->url)) }}" alt="{{ $photo->name }}" /></td> 


<img class="img" src="{{ storage_path() . ($photo->url) }}" alt="{{ $photo->name }}" /></td> 

$photo->urlは、例えば画像のファイル名を持つjDHPOTh7iejFABANSzasNbBWJ09DqLbqJb8ymJhv.png

あなたは私を聞かせてくださいだろうが、NE ...

私は、ブレードにこの行を変更しましたどの部分が私の問題か分かりますか?

アドバンスに感謝

UPDATE:

私はPhpStorm IDEを使用して、私は私のプロジェクトに私のパブリックフォルダをダウンロード-or this-私のシンボルリンクを同期するときにしていますパブリックフォルダの一覧に表示されません。

これは私のパブリッシュのlsですICフォルダ: AFTER

list of folders in public

そして、これが私のphpStormプロジェクトビューであるが、私のホストにパブリックフォルダの新しいコピーをダウンロード:

Folder list inside my IDE

そしてノートとして: 私はこのウェブサイトを最初に開発し始めました。その後、プロジェクト全体を私のLinuxに移しましたrサーバをemote ...

+0

'{{asset {'public /') '/'}を試しました。 $ photo-> url}} '? – linktoahref

+0

@linktoahrefうん、しかしうまくいかなかった...! – Kiyarash

+0

これは、生成されたIDを使用してパスを取得しようとしていると思われます。{{storage_path($ photo-> url)}} ' – linktoahref

答えて

1

参加してくれてありがとうございましたが、私のケースでは厄介な問題がありました...

rootを使用してサーバーにログインしました。php artisan storage:linkと入力した場合、シンボルのリンクはrootとしてownerとなりました。このシンボルリンクにアクセスする権限がApacheに存在しないため、ファイルにアクセスできませんでしたhttpにあります。

SOLUTION

私は...私は単に私の相対的なユーザ名と解決される問題へのシンボルリンクの所有者の所有者を変更でしたので 、5つのさまざまなウェブサイトを提供VDSを持って

chown -R usergroup:username /path/to/link 

それはそれです...

0

私は問題がここにあると思う:あなたがここにpublicフォルダとのあなたのファイルを入れている

$filePath = Storage::putFile('public', $request->file('photo'), 'public'); 

ここ:あなたはpublic/storage/からそれを取得しようとしている

<img class="img" src="{{ asset('public/storage/' . $photo->url) }}" alt="{{ $photo->name }}" /></td> 

。したがって、パスを次のように変更してください。

<img class="img" src="{{ asset('public/' . $photo->url) }}" alt="{{ $photo->name }}" /></td> 

もう一度お試しください。

注:ここにアップロードされた画像のパスがそのようにこの質問への答えを探している人のために同じpublicディレクトリ

+0

あなたの答えはありがとうございますあなたの提案?私は非常に多くの異なる方法を試しました... – Kiyarash

+0

更新された答えを確認してください –

+0

ありがとう、もう一度私は同じ状況を持っています... !!! – Kiyarash

関連する問題