【问题标题】:Laravel File Uploading | Fetching Files from MySQL Database to view in laravelLaravel 文件上传 |从 MySQL 数据库中获取文件以在 laravel 中查看
【发布时间】:2021-06-19 06:11:45
【问题描述】:

我现在不知道如何从 laravel 显示我的文件。数据库包含文件的路径,现在我需要获取我的文件并在 laravel 中显示它们。

files.blade.php

@extends('dashboard.layouts.dashboard-layout')
@push('css')



@endpush



@section('content')

<div class="d-flex vw-100 vh-100 justify-content-center align-items-center">
<img src="storage/{{$savedfile->filename}}" alt="">
</div>

 <div class="d-flex vw-100 vh-100 justify-content-center align-items-center">
        <form method="POST" enctype="multipart/form-data" action="{{route('dashboard.files')}}">
            @csrf
                <div class="form-group">
                  <label for="exampleFormControlFile1">Example file input</label>
                  <input type="file" class="form-control-file" name="uploadedfile" id="exampleFormControlFile1">
                </div>
                <div class="form-group"><button class="btn btn-success">Upload the file</button></div>
              </form>
        </div>

@endsection

@push('script')

@endpush

&lt;img src="storage/{{$savedfile-&gt;filename}}" alt="" /&gt; 是需要显示的文件

文件上传控制器

<?php

namespace App\Http\Controllers;

use App\Models\Fileupload;
use Illuminate\Http\Request;

class FileuploadController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function files(Request $request)
    {
        $file = $request->file('uploadedfile');
        $filename = $file->getClientOriginalName();
        $filename = time(). '.' .$filename;
    
        $path = $file->storeAs('public/docs', $filename);
    
        Fileupload::create(['filename' => $path]);

        return view('dashboard.files')->with('savedfile', $savedfile);

    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Fileupload  $fileupload
     * @return \Illuminate\Http\Response
     */
    public function show(Fileupload $fileupload)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Fileupload  $fileupload
     * @return \Illuminate\Http\Response
     */
    public function edit(Fileupload $fileupload)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Fileupload  $fileupload
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Fileupload $fileupload)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Fileupload  $fileupload
     * @return \Illuminate\Http\Response
     */
    public function destroy(Fileupload $fileupload)
    {
        //
    }
}

这是发布和返回文件的控制器。 return view('dashboard.files')-&gt;with('savedfile', $savedfile) 是返回和查看我的文件的代码。

不过……

这是我遇到的错误

Error Image

我不知道为什么,但它已经强调了

【问题讨论】:

    标签: php css mysql laravel


    【解决方案1】:

    错误很明显。$savedFile 未定义。所以你可以像下面这样更改它

    public function files(Request $request)
        {
            $file = $request->file('uploadedfile');
            $filename = $file->getClientOriginalName();
            $filename = time(). '.' .$filename;
        
           $file->storeAs('public/docs', $filename);
        
            Fileupload::create(['filename' => $path]);
    
             $path ="docs/".$filename;
          
            return view('dashboard.files')->with('savedfile', $path);
    
        }
    

    public function files(Request $request)
            {
                $file = $request->file('uploadedfile');
                $filename = $file->getClientOriginalName();
                $filename = time(). '.' .$filename;
            
               $file->storeAs('public/docs', $filename);
            
                Fileupload::create(['filename' => $path]);
        
              
             $path = \Illuminate\Support\Facades\Storage::url("docs/".$filename)
                return view('dashboard.files')->with('savedfile', $path);
        
            }
    

    在你看来是这样

    <img src="{{asset($savedfile)}}" />
    

    更新 更好的方法是为文档创建单独的文件系统,如下所示

    config/filesystem.php

     'docs' => [
                'driver' => 'local',
                'root' => storage_path('app/public/docs'),
                'url' => env('APP_URL').'/storage/docs',
                'visibility' => 'public',
            ],
    

    在你的控制器中

    $path=Storage::disk('docs')->url($filename);
    

    所以在你的刀片文件中

    <img src="{{$savedfile}}" />
    

    【讨论】:

    • $path 仍未定义
    • 尝试 $path="docs".$filename;.before return view
    • 更新了两个选项。让检查更新的答案
    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2017-08-22
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    相关资源
    最近更新 更多