php中laravel框架实现文件的上传功能

前言

最近在做一个laravel框架下的文件上传功能,此篇文章写下我的主要代码,担心自己遗忘的同时也供大家参考。

文件系统配置文件

laravel框架下而打开config文件下filesystems.php文件,
在此文件中,此处新增以下uploads代码:

'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],
        'public' => [
            'driver' => 'local',
            'root' => public_path('file'),
            'visibility' => 'public',
        ],
        'uploads' => [
            'driver' => 'local',
            'root' => storage_path('app/uploads'),
        ],
        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
        ],

    ],

];

‘root’ => storage_path(‘app/uploads’),
即为存储目录为storage下面APP中,在之后运行中,他会自动生成一个uploads目录,此目录与public目录平级。

转到控制器

在app/http/controllers/下新增StduentController,php文件
编写代码如下:

<?php
namespace App\Http\Controllers\Manager;
use Illuminate\Support\Facades\Storage;
use Validator;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Input;
use App\Http\Controllers\Controller;
use App\Service\SystemOperationLogService;
use App\Models\ControlBox;
use App\Models\ControlBoxLog;
use App\Models\Light;
use App\Models\LightDataLog;
use App\Models\Account;
use App\Models\ControlInstruction;
use App\Models\ControlBoxErrorAlarm;
use App\Models\ControlBoxElectricCurrent;


class StudentController extends Controller
{
    //文件上传方法
    public function upload(Request $request)
    {
        if ($request->isMethod('POST')) {
            $file = $request->file('source');
            //判断文件是否上传成功
            if ($file->isValid()) {
                //获取原文件名
                $originalName = $file->getClientOriginalName();
                //扩展名
                $ext = $file->getClientOriginalExtension();
                //文件类型
                $type = $file->getClientMimeType();
                //临时绝对路径
                $realPath = $file->getRealPath();
                $filename = date('Y-m-d-H-i-S') . '-' . uniqid() . '-' . $ext;
                $bool = Storage::disk('uploads')->put($filename, file_get_contents($realPath));
                var_dump($bool);
            }
            echo'上传成功 ';
            exit;
        }
        return view('student.upload');
    }
}

新建路由

在routes/web,php中新建路由

Route::any( 'upload', 'Manager\StudentController@upload');

Route::any( ‘upload’, ‘Manager\StudentController@upload’);
名称为upload,对于的为StudentController控制器下的upload方法。

新建视图

resources/views/新建student文件夹下面新建upload.blade.php视图文件
在这里插入图片描述
代码如下:


    @section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">文件上传</div>
                    <div class="panel-body">
                        <form class="form-horizontal" role="form" method="POST" action="" enctype="multipart/form-data">
                            {{ csrf_field() }}
                            <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                                <label for="file" class="col-md-4 control-label">请选择文件</label>

                                <div class="col-md-6">
                                    <input id="file" type="file" class="form-control" name="source">
                                    @if ($errors->has('password'))
                                        <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                    @endif
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-6 col-md-offset-4">
                                    <button type="submit" class="btn btn-primary">
                                        <i class="fa fa-btn fa-sign-in"></i> 确认上传
                                    </button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>


最终上传界面

在这里插入图片描述

文件上传位置

在这里插入图片描述
最终说明一下学习视频地址:慕课网/轻松学会laraval高级篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值