【问题标题】:How to upload and save multiple images in database with laravel 5.4?如何使用 laravel 5.4 在数据库中上传和保存多个图像?
【发布时间】:2018-05-12 14:10:23
【问题描述】:

我尝试用 laravel 5.4 上传多张图片,实际上上传图片的过程已经完成,问题是如何将它们存储在数据库中? 例如,当要创建一个包含多个已上传图像的幻灯片放映时,如何将它们分组以便幻灯片放映知道这些图像在一个组中?

你们能帮帮我吗?

【问题讨论】:

  • 理想情况下,您应该有一个单独的文件夹,其中包含您上传的所有图像。 db 应该只用于存储它们的路径。将图像文件上传到系统上的文件夹是简单的 php,它是指向数据库的定位器链接
  • 您应该将图像路径保存在数据库中(不是实际图像)并在前端加载它
  • 如果图像在“组”中,您应该创建一个类别模型。然后定义图像和类别模型之间的关系。这样您就可以选择与该类别相关的所有图像。例如生日、婚礼或风景的类别。
  • 当然,上传图片的过程就完成了。将它们存储在一个名为“Images”的文件夹中并保存它们的路径也完成了,我的意思是当我们想在前端加载它们时,它们如何在同一个组中?

标签: php laravel file-upload


【解决方案1】:

确保您转到 config/filesystems 并将“FILESYSTEM_DRIVER”转为“public”

模型存储图片路径:

class UserDocuments extends Model
{
    //
    protected $table = 'user_documents';

    public function store($user_id, $document_link, $file_name)
    {
        $this->user_id = $user_id;
        $this->document_link = $document_link;
        $this->file_name = $file_name;
        $this->save();
    }
}

控制器中用于存储文件的代码('document'是文件输入字段名称)

if ($request->hasFile('document')) {
            $link = $request->file('document')->store('documents');
        }
    $userDocuments->store(request('user_id'), url($link), $link);

要显示图像是否在一个组中,您必须创建一个名为“group_id”的数据库列并相应地对它们进行排序。

【讨论】:

  • 存储图像的代码正在运行,我认为 group_id 可以解决这个问题。每次,如果我想将图像加载到前端,那么我将通过它们的 group_id 加载它们。谢谢。
【解决方案2】:

我们必须通过逗号分隔将图像存储到一个记录/行中。

 class DocumentController extends Controller
 {
    public function store(Request $request)
    {
         $pid = $request->input('pid');
         $input = $request->file('files');

         $picture = array();
         if($request->hasFile('files')) : 
            foreach ($images as $item):
              $extension = $item->getClientOriginalName(); //image extension
              $name = time() . '.' .$extension;           //image name
              $item->move('uploads/documents/', $name);  //move to destination
              $arr[] = $name;      //store image into array                   
            endforeach;
            $picture = implode(",", $arr); //Image separated by comma
         else:
            $picture = '';
         endif;

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

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多