2017-08-06 14 views
0

私は、私の見解では、それを示すために、データベースにアップロードされた画像を取得しようとしているが、パスが間違っている、それが戻って画像としませんでした:laravelと右のパスを取得する5.4

なっパスそのようなものである:

http://localhost/prestige/public/admin/[%22http:////localhost//prestige//public//uploads//services//icons//24//0.jpg%22]

とデータベースにおける画像パスは、そのようなものである:

は、[ "のhttp://localhost/prestige/public/uploads/services/24/0.jpg"]

とビューは、ここではそれがあります:

<img src="{{$service->services_image}}" alt="" height="200" width="200"> 

誰もがそれで私を助けることができますか?

---更新---ここ それは、アップロードするための制御装置の画像です:

if(!File::exists(('uploads/services/'.$services->id))) mkdir(('uploads/services/'.$services->id), 0777); 


      if ($request->services_image){ 
      foreach($request->services_image as $key=>$pic){ 

       $url = []; 
       $ext = $pic->getClientOriginalExtension(); 
       $pic->move(('uploads/services/'.$services->id .'/'), $key.'.'.$ext); 


       if (! is_null(Service::find($services->id)->services_image)){ 
        $url = Service::find($services->id)->services_image; 
       } 

       $url[] = url('uploads/services/'.$services->id .'/'. $key.'.'.$ext); 

       Service::find($services->id)->update(['services_image' => NULL]); 

       Service::find($services->id)->update(['services_image' => json_encode($url)]); 
      } 
     } 
+0

src = "{{asset($ service-> services_image)}}" " –

+0

これは間違ったURLを返します: http:// localhost/prestige/public/admin/[%22http://// localhost // prestige // public // uploads // services // icons // 24 // 0.jpg%22] –

+1

イメージパスをデータベースに保存する場所にコードを投稿できますか? – harshpatel991

答えて

0

asset() helperは、一般的に、このために使用されているが - それはベースとして、アプリケーションのpublicディレクトリにURLを構築します。

+0

私はそれを試しましたが、うまくいきませんでした。このURLに戻ってきました。 http:// localhost/prestige/public/admin/[%22http://// localhost // prestige //public//uploads//services//icons//24//0.jpg%22] –

+0

それで '$ service-> services_image'はあなたが期待するものではありません。 'dd()'でそれをダンプし、その内容を確認してください。 – ceejayoz

+0

私はそれを更新しました –

1

まず、画像パスをどのように保存しているかを調べる必要があります。それが配列になることを期待していない場合は、それを奇妙に割り当てる必要があります。割り当ての方法を上書きすることができます。

public function setServicesImageAttribute($value) 
{ 
    $this->attributes['services_image'] = $value; 
} 

この方法で割り当てを変更することができます。

同様に、あなたが使用して検索を変更することができます。

public function getServicesImageAttribute($value) 
{ 
    return $value; 
} 

ちょうどあなたがそれをここで検索されることを期待する方法を変更します。

これはJSONデータなので、property $casts = ['services_image' => 'json'];を使用してJSONとして設定するとJSONの割り当てと取得が処理されます。 (デフォルトでは、すべてが常にJSONオブジェクトに含まれていれば頭の上から覚えていないので、あなたがその動作を予期していなかったように、割り当てのために何をしているのか調べてください)。

何らかの理由でJSON配列に保持している場合は、JSON配列から抽出する場合はゲッターをreturn json_decode($value)[0];に変更してください。

割り当てからドメインを取り除き、url()ヘルパーを使用して問題を解決する価値があります。それは何らかの理由でデータベースを再利用する場合、あなたが働いているドメインからあなたを切り離します。また、Fileファサードのようなものでドメインを操作するときに、ドメインを削除する必要がないことも意味します。

関連する問題