2017-08-16 9 views
0

アップロードした画像のファイル名をデータベースに挿入する際に問題があります。私のイメージのアップロードは成功しましたが、私のデータベースにイメージのファイル名を保存して問題が発生しました。私のコードを実行すると、1つの画像ファイルのみがデータベースに正常に保存されました。Laravel 5.4複数の画像をアップロードしてファイル名をデータベースに保存する

は、ここに私のコードです:

<form action="{{ route('admin.pictures') }}" method="post" enctype="multipart/form-data"> 
<input required type="file" id="images" name="images[]" multiple /> 
</form> 

コントローラ:

$input=$request->all(); 
$images=array(); 
if($files=$request->file('images')){ 
    foreach($files as $file){ 
    $name=$file->getClientOriginalName(); 
    $file->move('image_files',$name); 
    $images[]=$name; 
    } 
} 
DB::table('product_images')->insert(array(
    'product_image'=> implode("|",$images), 
    'product_id'=>$product_id 
)); 

私は、インターネットを閲覧からコードをコピーしました。私は挿入テーブルをループする必要がありますか?私はこのコードを試したときに私は3つの画像を選択し、3つの画像は正常にアップロードされたが、最初の画像のファイル名がデータベースに保存されている唯一のファイルだったので、3つの画像ファイル名をデータベースに挿入します。

+0

* $像[] = $名;。最初の画像だけしか保存されている理由*それはです。アップロードされたイメージの数をカウントしてください。E.G: $ i = 0; foreach($ファイルとしての$ファイル){ $ name = $ file-> getClientOriginalName(); $ file-> move( 'image_files'、$ name); $ images [$ i ++] = $ name;あなたが彼らに –

+0

あなたのforeachの配列が、私は –

+0

@AnarBayramovをforeachのよう } –

答えて

0
$images[]=$name; 

これは、最初の画像のみが保存されるためです。 でアップロードし、インクリメントされたどのように多くの画像をカウントするようにしてください

$i = 0; foreach($files as $file){ $name=$file->getClientOriginalName(); $file->move('image_files',$name); $images[$i++]=$name; } 
+0

'の下に答えました@JcJohn正式な方法 – vher2

関連する問題