Загрузить изображение laravel 9, сохраненное в виде файла .tmp в базе данных

это мой первый раз, когда я использую Laravel 9, и я хочу задать вопрос. Итак, я пытаюсь загрузить изображение и сохранить его в базе данных, затем я хочу показать изображение в моем представлении. Но проблема в phpmyadmin, он показывает только место, где загруженный файл хранится как .tmp. Изображение, которое я загрузил, имеет имя файла, которое соответствует тому, что я хочу в папке public/image, но почему в базе данных имя изменяется на D:\xampp\tmp\php5819.tmp, кто-нибудь может мне помочь?

Вот мой контроллер:

 public function create()
{
    $student = Student::all();
    return view('create', ['addstudent' => $student]);
}

public function save(Request $request)
{
    $newName = '';
    if ($request->file('image')) {
        $extension = $request->file('image')->getClientOriginalExtension();
        $newName = $request->name . '-' . now()->timestamp . '.' . $extension;
        $request->file('image')->storeAs('image', $newName, 'public');
    }

    $request['image'] = $newName;
    $student = Student::create($request->all());

    if ($student) {

        session()->flash('success', 'Data berhasil ditambahkan');
        session()->flash('pesan', 'Data berhasil ditambahkan');
    }
    return redirect('/about');
    // dd($request->all());
}

Это мой вид, который я хочу отобразить на изображении:

@extends('layouts.templates')
@section('title', 'Detail')
@section('content')
<div class = "container">
    <div class = "row">
      <h1>Student Detail</h1>
      <div class = "my-3">
        <img src = "{{asset('image'.$student->image)}}" alt = "{{ $student->name}}">
      </div>
      <h3>Nama : {{$student->name}}</h3>
      <h3>Gender : 
      @if ($student->gender == 'P')
        Perempuan
      @else
        Laki - laki
      @endif</h3>
      <h3>NIM : {{$student->NIM}}</h3>
      <a href = "/about">Back</a>  
    </div>
</div>


@endsection

Это моя форма

@extends('layouts.templates')
@section('title', 'Add Student')
@section('content')
<div class = "container">
    <div class = "row">
        <div class = "col-8 m-auto">
            <h2 class = "my-3">Form Add Student</h2>
            <form action = "save" method = "post" enctype = "multipart/form-data">
                @csrf
                <div class = "form-group">
                    <label for = "name">Nama </label>
                    <input name = "name" type = "text" class = "form-control" id = "name" aria-describedby = "emailHelp"
                        placeholder = "Masukkan Nama" required>
                </div>
                <div class = "form-group">
                    <label for = "gender">Gender</label>
                    <select name = "gender" id = "gender" class = "form-control" required>
                        <option value = "">Pilih</option>
                        <option value = "L">L</option>
                        <option value = "P">P</option>
                    </select>
                </div>
                <div class = "form-group mb-3">
                    <label for = "NIM">NIM</label>
                    <input name = "NIM" type = "text" class = "form-control" id = "NIM" placeholder = "Masukkan NIM">
                </div>
                <label for = "NIM">Image</label>
                <div class = "input-group mb-3">
                    <input type = "file" class = "form-control" id = "image" name = "image"
                        aria-describedby = "inputGroupFileAddon04" aria-label = "Upload">
                </div>
                <div class = "form-group row">
                    <div class = "col-sm-10 mb-5">
                        <button type = "submit" class = "btn btn-primary">Add</button>
                    </div>
                </div>
            </form>
            <a href = "/about">Back</a>
        </div>
    </div>
</div>

@endsection

Вот ошибка В базе

В папке ларавела Имя изображения в папке laravel

Имя столбца базы данных Название колонки

Не могли бы вы поделиться именами столбцов таблицы

Shibon 13.02.2023 07:33

готово, я делюсь именами столбцов

namarahasia 13.02.2023 07:41
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы сохраняете имя файла из запроса, который является временным именем файла вместо сохраненного в Laravel.

Метод storeAs() вернет путь, сохраненный Laravel, попробуйте ниже.

public function save(Request $request)
{
    $data = $request->all();
    if ($request->file('image')) {
        $extension = $request->file('image')->getClientOriginalExtension();
        // $newName = $request->name . '-' . now()->timestamp . '.' . $extension; No need for this.
        $path = $request->file('image')->storeAs('image', $newName, 'public'); // Catch the path Laravel stored.
    }

    $data['image'] = basename($path); // Suggest save filename.ext only, if you need origin path just remove basename function.
    $student = Student::create($data);

    if ($student) {

        session()->flash('success', 'Data berhasil ditambahkan');
        session()->flash('pesan', 'Data berhasil ditambahkan');
    }
    return redirect('/about');
    // dd($request->all());
}

Я пробовал, но это все равно не меняется, в базе данных имя по-прежнему .tmp

namarahasia 13.02.2023 06:57

@namarahasia Можешь попробовать еще раз? Не назначать в $ request.

Charlie 13.02.2023 08:01

Другие вопросы по теме