Laravel вставка нормального изображения, значение становится нулевым - PullRequest
1 голос
/ 30 января 2020

Я учусь в данный момент. Но есть одна проблема. Я создал базу данных:

enter image description here

, и мой код контроллера:

UploadController. php

public function upload(Request $request, Task $task)
{

        $task->image = Request::get('image');
        $task->save();
        return redirect('/');

}

TaskController. php

public function update(Request $request, Task $task)
{
    if(isset($_POST['delete'])) {

        $task->delete();
        return redirect('/');
    }
    else
    {
        $task->description = Request::get('description');
        $task->save();
        return redirect('/'); 
    }       
}

public function upload(Request $request, Task $task)
{
    if(isset($_POST['delete'])) {

        $task->delete();
        return redirect('/');
    }
    else
    {
    $task->image = Request::get('image');
    $task->save();
    return redirect('/');
    }       
}

edit.blade. php

<div class="container">
<h1>Edit the Task</h1>



<form method="POST" action="/task/{{ $task->id }}">

<div class="form-group">
    <textarea name="description" class="form-control">{{$task->description }}</textarea>    
</div>

<form action="{{ URL::to('upload') }}" method="post" enctype="multipart/form-data">
    <label>Select image to upload:</label>

    <input class="btn btn-primary" type="file" name="file" id="file">
    <input class="btn btn-primary" type="submit" value="Insert" name="insert" enctype="multipart/form-data">
    <input class="btn btn-primary" type="hidden" value="{{ csrf_token() }}" name="_token">
    <img class="user_avatar" src="{{url('public/uploads/test.jpg')}}">      
</form>
<div class="form-group">
    <button type="submit" name="update" class="btn btn-primary">Update task</button>
</div>


<div class="form-group">
    <button type="submit" name="update" class="btn btn-primary">Update task</button>
</div>

Это мой код, когда я пытаюсь чтобы вставить изображение в мою базу данных, оно становится нулевым и самостоятельно создает другой набор нулевых данных. Как я могу решить эту проблему? Спасибо.

enter image description here

Это моя база данных на данный момент

enter image description here

Это внутри значение изображения enter image description here

Ответы [ 4 ]

1 голос
/ 30 января 2020

Используйте это для того же изображения непосредственно в дБ в поле BLOB

$task->image = request('image')->encode('jpg', 80);
$task->save();

Вы можете обновить переменные так, как вам удобно, но решение в кодировать Вы можете сначала кодировать свое изображение как это

$b64 = base64_encode(request('image'));
0 голосов
/ 30 января 2020

Попробуйте следующий код:

 $path = $request->file('image')->getRealPath();
 $image = file_get_contents($path);
 $base64 = base64_encode($image);
 $task->image = $base64;
 $task->save();
0 голосов
/ 30 января 2020

Попробуйте это

public function upload(Request $request, Task $task)
{
    if(isset($_POST['delete'])) {

        $task->delete();
        return redirect('/');
    }
    else
    {
    $task->image = \Storage::disk('public')->put('image', $request->file('image'));
    $task->save();
    return redirect('/');
    }       
}

и

файловых систем. php

внутри

   'public' => [
            'driver' => 'local',
            'root' => public_path() . '/uploads',
            'url' => env('APP_URL').'/uploads',
            'visibility' => 'public',
        ],

внутри блейда

<input class="btn btn-primary" type="file" name="image" id="file">

изменить name="image" тогда только вы можете получить $request->file('image')

0 голосов
/ 30 января 2020

вы не можете сохранить изображение в базе данных, вы должны переместить изображение в папку и сохранить адрес его в базе данных, а тип столбца изображения должен быть varchar-текстом. изменить код на:

   public function storeTask()
{
    $task = new Task();
    $task->name = request('name');
    $task->description = request('description');
    $image = request->file('image');
    $extention = $image->getClientOriginalExtension();
    $name = rand(1000, 9999) '.' . $extention;
    $path = public_path() . '/images/' . $name;
    $image->move($path);
    $task->image = $path;
    $task->save();
    return redirect('/task');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...