为laravel 5.5中的帖子上传多个图像

时间:2017-11-10 02:59:06

标签: laravel

我想知道如何在帖子中添加多张图片?

目前我有geline我试图获取图片并附加到ImageController,但问题是如果我使用该方法,因为我仍然没有保存我的帖子就没有id附在图像上。

有什么想法吗?

请查看更好的理解:

https://ibb.co/huC1Qw

刀片:

post_id

控制器:

<form action="upload" id="upload" enctype="multipart/form-data" method="post">
    <div class="row">
        <div class="col-md-6"><input type="file" class="form-control" name="files[]" multiple></div>
        <div class="col-md-6"><input type="submit" class="btn btn-success" value="Upload now"></div>
    </div>
</form>

路线:

public function upload(Request $request) {
  $files = $request->file('file');

  if (!empty($files)):
    foreach($files as $file):
      Storage::put($file->getClientOriginalName(), file_get_contents($file));
    endforeach
  endif;

  return \response::json(array('success' => true));
}

3 个答案:

答案 0 :(得分:2)

方法1。 如果您尚未完成提交帖子,请返回$request->photos或将其放入会话中。在提交后分配参考文献。

方法2。 首先,将它们保存在[temp]中然后移动并分配到帖子。

方法3。 在数据库中创建默认记录,将图像分配给该记录,获取record_id post_id并返回到post_id的表单。然后用post_id填充该帖子。

方法4。 在数据库中保存图像不是一个好的选择,只需将它们保存为文件并在数据库中放置引用链接,或者通过与帖子具有相同ID的文件夹的ID找到它们,或者美化它们的链接...绝对不能将它们保存到数据库中。我认为,每个人都必须找到适合自己生活的方式。

答案 1 :(得分:0)

试试这个: -

use App\ProductsPhoto; \\ add in top of controller
public function upload(Request $request) {
$product = Product::create($request->all());
if ($request->hasFile('files')) {
    $files = $request->file('files');
    foreach($files as $file){
        $productsPhotos = new ProductsPhoto;
        $filename = $file->getClientOriginalName();
        $extension = $file->getClientOriginalExtension();
        $fileName = str_random(5)."-".date('his')."-".str_random(3).".".$extension;
        $destinationPath = 'images/ProductsPhotos'.'/';
        $file->move($destinationPath, $fileName);
        $productsPhotos->product_id = $product->id,
        $productsPhotos->filename = $fileName;
        $productsPhotos->save();
    }
}
return 'Upload successful!';
}

希望它有所帮助!

答案 2 :(得分:0)

用于上传和显示图像 如果你使用两张桌子。

upload.blade.php

<form method="post" action="{{ url('/uploads') }}" enctype="multipart/form-data">

 <input type="file" id="file" name="files[]" class="inputfile" value="{{ old('arquivo') }}" multiple />

控制器

public function show() {

      $images = DB::select('SELECT * FROM table1 INNER JOIN table2 on table1.id = table2.id_file');

      return view('index')->with('images', $images);

    }

public function upload(yourRequest $request) {

     $images = model1::create($request->all());
     foreach ($request->files as $file) {
       $filename = $file->store('/uploads');
       modelFiles::create([
         'id_file' => $images->id,
         'file' => $filename
       ]);
     }

     return redirect()->action('Controller@show')->withInput(Request::only('name'));
    }

index.blade.php

@foreach($images  as $i)
    <div class="item {{ $loop->first ? 'active' : '' }}">
      <img src="{{ asset("storage/$i->file") }}" alt="...">
    </div>
      @endforeach