это мой первый раз, когда я использую 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
Имя столбца базы данных Название колонки
готово, я делюсь именами столбцов
Вы сохраняете имя файла из запроса, который является временным именем файла вместо сохраненного в 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 Можешь попробовать еще раз? Не назначать в $ request.
Не могли бы вы поделиться именами столбцов таблицы