如何在laravel中将多个图像路径存储到数据库中?

时间:2016-11-07 08:47:40

标签: laravel-5

我正在laravel中处理多个图片上传。上传成功但是,我遇到了问题。以后使用我应该存储在数据库中。对于单列,它很容易,但对于不同的列,我不能做到这一点。

这是我的图片上传代码  $ images = [];         $ destDir =“public / uploads /”;

    if($request->file('image1')) $images[]=$request->file('image1');
    if($request->file('image2')) $images[]=$request->file('image2');
    if($request->file('image3')) $images[]=$request->file('image3');

    foreach($images as $image)
    {

        if(!empty($image))
        {
            $imageName = $image->getClientOriginalName();
            $extension = $image->getClientOriginalExtension();
            $temPath = $image->getRealPath();
            $enImg = mt_rand(1111,9999).".".$extension;
            $newPath = $destDir.$enImg.".".$extension;
            move_uploaded_file($temPath, $newPath);
        }
  }

3 个答案:

答案 0 :(得分:1)

我有一种感觉,你正在以一种让你更难的方式接近这一点。您可以只设置多个文件输入,并将输入的名称设置为数组,而不是在表单中创建多个单独的文件输入:

<form action="demo_form.asp">
  Images: <input type="file" name="images[]" multiple>
  <input type="submit">
</form>

然后在你的php中你可以做这样的事情:

if (isset($request->all()['images'])) {
    $this->persistUserImages($request->all()['images'], $userId);
}

/**
 * Persists user images to storage and DB
 *
 * @param array $userImages
 * @param int $userId
 * @return array
 */
private function persistUserImages(array $userImages, $userId = 1)
{
    if (empty($userImages)) {
        return [];
    }

    $uploadedUserImagesFilenames = $this->uploadUserImagesToCloud($userImages, $userId);

    foreach ($uploadedUserImagesFilenames as $filename) {
        $userImage = new UserImage([
            'user_id' => $userId,
            'filename' => $filename,
            'visible' => 1
        ]);

        $userImage->save();
    }
}

答案 1 :(得分:0)

创建数据透视表并将图像存储在不同的行中..

Table schema:- `images` table
columns `id`,`user_id`(foreign key),`image_path`

每次都将$newPath存储在此表格中。

答案 2 :(得分:0)

您可以这样做。在您的刀片中,

<form action="{{url('path')}}" methos="post" enctype="multipart/form-data">
  Images: <input type="file" name="images[]" multiple>
  <input type="submit">
</form>

在您的方法中,

 public function store(Request $request){

      foreach ( $request->images as $image) {
            Model::create([
                'image_url' => $image,
            ]);
        }

}

或 请点击以下链接。这是解决此问题的非常简单的方法。 Multiple Image Upload In Laravel

希望您可以解决您的问题。