如何将图像从模态存储到数据库?

How can I store an image to the database from modal?

我想通过模态存储图片,通常我都是这样存储图片的。但它从不存储,它在数据库中存储空值,就像文件甚至没有上传一样。模式存储上的其他所有内容都完美无缺,除了图像。

这是我控制器上图像的代码。

 if($request->hasFile('image')){
            $file = $request->file('image');
            $extension = $file->getClientOriginalExtension();
            $filename = time() .'.'.$extension;
            $file->move('uploads/event/',$filename);
            $event->image = $filename;
        }

在我看来,这就是我上传图片的方式。

 <div class="text-center">
                            <img src='http://ssl.gstatic.com/accounts/ui/avatar_2x.png'  width="300px" height="300px" class="avatar img-circle img-thumbnail" alt="avatar" name="image" >
                        </div><hr>
                        <div class="input-group">
                            <div class="custom-file">
                                <input type="file" class="custom-file-input" name="image" >
                                <label class="custom-file-label">Upload picture</label>
                            </div>
                        </div>

在你的控制器上试试这个:

use Image;
    public function store(CreateRequest $request)
    {
        $file = $request->file('image');
        $imagename = $file->getClientOriginalName();
        $imageext = $file->getClientOriginalExtension();
        $path = 'upload/image/'.time().'.'.$imageext;
        $image = Image::make($file);
        $image->save($path);
        $input = $request->all();
        $input['image'] = $path;
        $user = $this->userRepository->create($input);
        return redirect(route('users.index'));
    }

update()函数做同样的事情

文件将存储在 /public/upload/image 文件夹中

您也可以尝试使用 'Intervention\Image' 和 File class:

composer require intervention/image
<?php
...

use File;
use Intervention\Image\Facades\Image

...


if ($request->hasFile('image')) {
    $image = $request->file('image');
    $filename = 'image.'.$image->getClientOriginalExtension();
    $save_path = storage_path().'uploads/event/';
    $path = $save_path.$filename;
    $public_path = 'uploads/event/'.$filename;

    // Make the user a folder and set permissions
    File::makeDirectory($save_path, $mode = 0755, true, true);

    // Save the file to the server
    Image::make($image)->resize(300, 300)->save($save_path.$filename);

    // Save the public image path
    $event->image = $public_path;
    $event->save();
}

    return response()->json(['path' => $path], 200);
} else {
    return response()->json(false, 200);
}

对于我的代码,唯一的问题是我没有使用 enctype="multipart/form-data"。找了选项,找到了这个,写在action和form-group div的形式上。它有效,图像存储并更新。

  <form action="{{action('CalendarController@store')}}" method="POST"  enctype="multipart/form-data">

                    {{csrf_field()}}
                <div class="modal-body">
                    <div class="form-group" enctype="multipart/form-data">

自从我完成这项工作后,我将开始实施其他代码以获得更好的性能,并开始了解 laravel 中的存储。谢谢大家!