【问题标题】:File upload returns null in Laravel文件上传在 Laravel 中返​​回 null
【发布时间】:2020-12-17 14:40:57
【问题描述】:

我正在努力将媒体上传添加到我的自定义 CMS。为此,我尝试了多种形式的相同上传功能。当我单击上传时,错误显示“图像”是必填字段,即使字段中有文件也是如此。下面,我有我的模型、视图、控制器和迁移,以提供有关我如何尝试上传媒体的见解。

Media.php(模型)

class Media extends Model
{
    use HasFactory;

    protected $fillable = ['name', 'path', 'alt', 'user_id'];
}

MediaController.php(控制器)

class MediaController extends Controller
{
    public function index()
    {
        $uploads = Media::get();
        $users = User::get();
        return view('admin.media.index', compact('uploads', 'users'));
    }

    public function create()
    {
        return view('admin.media.upload');
    }

    public function store(Request $request)
    {
        $this->validate($request, [
            'image' => 'required|image|mimes:jpg,png,jpeg,gif,svg|max:2048'
        ]);
        $name = $request->file('image')->getClientOriginalName();
        $path = $request->file('image')
             ->store('public/img/media/' . date("Y/M"));
        $upload = new Media;
        $upload->user_id = Auth::id();
        $upload->name = $name;
        $upload->path = $path;
        $upload->alt = $request->alt;
        $upload->save();

        return redirect()->route('admin.media.index')
            ->with('success', 'Media uploaded successfully');
    }
}

upload.blade.php(查看)

@extends('layouts.admin.app')
@section('title', 'Upload Media')

@section('content')
    <section class="my-4">
        <h3>{{ __('Media')}} | {{ __('Upload New Media') }}</h3>
        <a class="btn btn-warning" href="{{ route('admin.media.index') }}"> {{ __('Go Back To Media')}}</a>
    </section>

    @if ($message = Session::get('success'))
        <div class="alert alert-success">
            <p>{{ $message }}</p>
        </div>
    @endif
    <div class="flex">
        <form action="{{ route('admin.media.store') }}" enctype="multipart/form-data" method="POST" class="w-full">
            @csrf
            <div class="flex">
                <div class="w-full md:w-3/4">
                    <x-general.form.group class="">
                        <input type="file" name="file" class="form-control" id="image">
                        @error('image')
                        <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                        @enderror
                    </x-general.form.group>
                    <button type="submit" class="btn btn-dark w-full" value="{{ __('Upload Media')}}"/>
                </div>
                <div class="w-full md:w-1/4">
                    <x-general.form.group class="">
                        <img src="" id="image_preview" alt="Upload Preview" class=""/>
                        <x-admin.general.forms.label for="alt" label="{{ __('Alt Text')}}" class="small"/>
                        <input type="text" name="alt" id="alt" class="" value=""/>
                        @error('alt')
                        <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                        @enderror
                    </x-general.form.group>
                </div>
            </div>
        </form>
    </div>
@endsection

我也有截图来展示这个过程:

【问题讨论】:

    标签: php laravel laravel-8 laravel-filesystem


    【解决方案1】:

    出现错误是因为没有带有name="image&lt;input&gt; 元素。您的文件上传字段有name="file"。改变

    <input type="file" name="file" class="form-control" id="image">
    

    <input type="file" name="image" class="form-control" id="image">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-03
      • 2018-03-29
      • 1970-01-01
      • 2014-07-23
      • 2019-08-11
      • 2019-09-21
      • 1970-01-01
      • 2014-02-21
      相关资源
      最近更新 更多