web-dev-qa-db-ja.com

Laravel 5.2での複数の画像のアップロード

最後に、画像をアップロードして移動できますが、Laravelで複数のアップロード画像を作成したいと思います。それは可能ですか?それを作るために配列を使用する必要がありましたか?

このコードから少し変更することはできますか?

それは私のProductController.phpにあります

$picture = '';

if ($request->hasFile('images')) {
    $file = $request->file('images');
    $filename = $file->getClientOriginalName();
    $extension = $file->getClientOriginalExtension();
    $picture = date('His').$filename;
    $destinationPath = base_path() . '\public\images/';
    $request->file('images')->move($destinationPath, $picture);
}

if (!empty($product['images'])) {
    $product['images'] = $picture;
} else {
    unset($product['images']);
}

ありがとうございました。注:上記の私のコードは、stackoverflowの親切な人からのものです。ありがとうございます;)

フロントエンドフォームでは、次のようなフィールド属性名を使用する必要があります。

name="images[]"

そして、コントローラーコードは次のようになります。

$picture = '';
if ($request->hasFile('images')) {
    $files = $request->file('images');
    foreach($files as $file){
        $filename = $file->getClientOriginalName();
        $extension = $file->getClientOriginalExtension();
        $picture = date('His').$filename;
        $destinationPath = base_path() . '\public\images';
        $file->move($destinationPath, $picture);
    }
}

if (!empty($product['images'])) {
    $product['images'] = $picture;
} else {
    unset($product['images']);
}
14
sohaib rehman

$ _POSTからの入力は配列として入力されます。あなたがする必要があるのはそれを繰り返すことです:

$picture = '';

if ($request->hasFile('images')) {
    $files = $request->file('images');
    foreach($files as $file){
        $filename = $file->getClientOriginalName();
        $extension = $file->getClientOriginalExtension();
        $picture = date('His').$filename;
        $destinationPath = base_path() . '\public\images/';
        $request->file('images')->move($destinationPath, $picture);
    }
}
3
Adam

複数の画像をアップロードするためにわずかに変更されたコード。

 public function store(Request $request)
 {
         $pid = $request->input('pid');
         $input = $request->file('images');

         $picture = array();
         if($request->hasFile('images')) :
            foreach ($input as $item):
              $extension = $item->getClientOriginalName();
              $name = date('Ymd') . '.' . $extension;
              $destinationPath = base_path() . '/uploads/images/';
              $item->move($destinationPath, $name);
              $arr[] = $name;
            endforeach;
            $picture = implode(",", $arr);
         else:
            $picture = '';
         endif;

         DB::table('document')->insert(array('pid' => $pid,'image' => $picture)); 
         Session::flash('message', 'Multiple pictures are uploaded successfully');
         return redirect('/image-upload');
 }
0
rashedcs