为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 图片上传到数据库

Laravel 图片上传到数据库

PHP
凤凰求蛊 2023-10-15 16:44:55
这个函数是我用来存储新公司的函数:public function store(Request $request){       $file = $request->file('logo');    $filename = 'company-logo-' . time() . '.' . $file->getClientOriginalExtension();    $path = $file->storeAs('public', $filename);    dd($path);                Company::create([        'name' => $request->name,        'email' => $request->email,        'logo' => $request->logo,        'website' => $request->website    ]);    return redirect('/company/all');}该视图的形式如下:@extends('layouts.app')@section('content')    <div class="card">        <div class="card-body">            <h4 class="card-title">Create a Company</h4>        </div>        <div class="container">            <div class="jumbotron">                <ul class="list-group">                    <li class="list-group-item">                        <h3>Enter Company Information:</h3>                        <form action="{{ route('company.store') }}" enctype="mutlipart/form-data" method="POST">                            @csrf                            <div class="form-group">                                <input type="text" class="form-control" name="name" placeholder="Company name" value="{{ old('name') }}">                            </div>                            <div class="form-group">                                <input type="text" class="form-control" name="email" placeholder="Email" value="{{ old('email') }}">                            </div>                            <div class="form-group">                                <input class="form-control" type="file" name="logo">                            </div>基本上我想要做的是将图像的名称发送到数据库并将图像上传到我的公共文件夹。这段代码两者都没有发生。当我删除从 $file 开始直到 dd($path) 的部分时;它将值添加到数据库,但图像尚未上传。有什么帮助吗?提前致谢。
查看完整描述

5 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

首先,表单上的属性是错误的,enctype="mutlipart/form-data"而且应该是错误的enctype="multipart/form-data"


或者您可以根据您的要求使用以下代码:


if($request->hasFile('logo')){

        $file = $request->file('logo');

        $fileName = 'company-logo-' .time().$file->getClientOriginalName();

        Storage::put('public/'.$fileName,file_get_contents($file));

        now you can store the $filename variable in database and image will be uploaded to storage/app/public folder

    }

请添加use Storage到文件顶部并运行php artisan storage:link以在存储文件夹和公共文件夹之间建立符号链接


查看完整回答
反对 回复 2023-10-15
?
心有法竹

TA贡献1866条经验 获得超5个赞

首先你改变enctype="multipart/form-data"而不是enctype="mutlipart/form-data"你的形式。 然后将此代码放入您的控制器


public function store(Request $request)

{

  if($request->hasFile('logo')) {

    $img_ext = $request->file('logo')->getClientOriginalExtension();

    $filename = 'company-logo-' . time() . '.' . $img_ext;

    $path = $request->file('logo')->move(public_path(), $filename);//image save public folder

  }

  //You should store only filename not path in db

  Company::create([

    'name' => $request->name,

    'email' => $request->email,

    'logo' => $filename, 

    'website' => $request->website

  ]);


    return redirect('/company/all');

}


查看完整回答
反对 回复 2023-10-15
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

您可以使用文件池。核心库是用普通 JavaScript 编写的,因此可以在任何地方使用。 

查看完整回答
反对 回复 2023-10-15
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

尝试更改为:


public function store(Request $request)

{   


    $file = $request->file('logo');

    $path = '';

    if($file) {

        $filename = 'company-logo-' . time() . '.' . $file->getClientOriginalExtension();

        $path = $file->storeAs('public', $filename);

    }            


    Company::create([

        'name' => $request->name,

        'email' => $request->email,

        'logo' => $path,

        'website' => $request->website

    ]);


    return redirect('/company/all');

}


查看完整回答
反对 回复 2023-10-15
?
三国纷争

TA贡献1804条经验 获得超7个赞

  if (Input::hasFile('logo')) {

                $file = Input::file('logo');

                $ext = $file->getClientOriginalExtension();

                $file_name = 'company-logo-' . time() . ".{$ext}";

                $path = base_path().'/public/';

                $file->move($path , $file_name);

            }


查看完整回答
反对 回复 2023-10-15
  • 5 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信