2017-06-18 3 views
0

アップロードした画像をフォームに保存し、public/uploadsフォルダに保存してファイル名をデータベースに保存してください。laravelのパブリックフォルダに保存されているファイルを取得できません5

私は正常にファイルをpublic/uploadsフォルダにアップロードしましたが、生成された一意の名前で保存された問題とdbに保存された名前が元の名前です。

.... 
$post_images->image_file_name = $image->getClientOriginalName(); 
Storage::disk('uploads')->put('prefix_'.$post_id, $image); 
$post_images->save(); 

とビューで示しながら、

<img src="{{url('/uploads')}}/prefix_{{$images->post_id}}/{{$images->image_file_name}}"> 

元のファイル名(public/uploads/some_id/my_original_file_name.png)のURLの形式が、public/uploads/some_id/unique_name.pngに一意の名前を持っています。

アップロードしたファイルの一意の名前を取得してデータベースに保存するにはどうすればよいですか? これを達成するための方法は他にありますか?

+0

どのようにして名前は?より多くのコードを提供してください – utdev

+0

@utdevその一意の名前はlaravelによって作成されます。 'Storage :: disk( 'uploads') - > put();を使うと、一意のファイル名を作り、ファイルを保存します。 – Mann

答えて

0

独自のイメージパスを含む別の列をデータベース(イメージテーブル)に作成できます。

元の画像の名前をパスに保存した後、独自の画像名(パス)をデータベースに保存する別の保存機能を追加することができます。

次に、ブレードをループして正しいパスを取得できます。

それは、このようなものになります。あなたのビューで

// get all images in your controller method and pass those to your view 
public index() 
{ 
    $images = DB::table('images') // here you have to put the table name, where your images are saved at 
    return view('image.index', compact('images')) 
} 

// loop through all images and get the path name from your database 
@foreach($images as $imageKey => $imageValue) 
    <img src="{{ $imageValue->unique_path }}" /> 
@endforeach 

編集:

あなたがこれをしなければならない独自の画像名保存するには:

$image->fill(['unique_image' => $prefix.'_'.$post_id.'.png']); // unique_image is your db column name, if its a png 
$image->save(); 
+0

さて、私はそれを追加することができます知っている、ユニークな名前を取得する方法は私の質問ですか? – Mann

+0

その後、モデルをループしてパス名を得ることができます。私の答えに追加してください。 – utdev

+0

ループして取得できます。知っている。一意のファイル名を最初に取得してdbを格納するにはどうすればよいですか?あなたは私を得ていますか? – Mann

関連する問題