Laravel 框架常用功能:文件上传

18 篇文章 0 订阅
  • 文件系统:

    • Laravel 的文件系统是基于 Frank de Jonge 的 Flysystem 扩展包
    • 提供了简单的接口,可以操作本地端空间、Amazon S3、Rackspace Cloud Storage
    • 可以非常简单的切换不同的保存方式,但仍使用相同的 API 操作
  • 配置文件:config/filesystems.php

    • 支持的驱动: “local”, “ftp”, “sftp”, “s3”, “rackspace”
    • 默认使用 local
  • 演示:修改配置文件config/filesystems.php

// 添加如下配置
'uploads' => [
   'driver' => 'local',
   'root' => storage_path('app/uploads'),
   // 'root' => public_path('uploads'),		// public 目录
],

  • 控制台清空配置文件缓存
php artisan config:clear
  • routes/web.php 新建一条路由
Route::any('upload', 'StudentController@upload');
  • 修改 App/Http/Controllers/StudentController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Storage;		// 引入
use App\Student;

class StudentController extends Controller{
	// 上传
    public function upload(Request $request){
        if($request->isMethod('POST')){
            // var_dump($_FILES);
            $file = $request->file('source');
            // dd($file);
            // exit;
            // 文件是否上传成功
            if($file->isValid()){
                $originalName = $file->getClientOriginalName();     // 原文件名
                $ext = $file->getClientOriginalExtension();         // 扩展名
                $type = $file->getClientMimeType();                 // MimeType
                $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);
            }
            
        }
        return view('student.upload');
    }

}
  • 新建视图文件 resources/views/student/upload.blade.php
@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">{{ __('文件上传') }}</div>

                <div class="card-body">
                    <form method="POST" action="" enctype="multipart/form-data">
                        @csrf

                        <div class="form-group row">
                            <label for="file" class="col-md-4 col-form-label text-md-right">{{ __('请选择文件') }}</label>

                            <div class="col-md-6">
                                <input id="file" type="file" class="form-control @error('password') is-invalid @enderror" name="source" required autocomplete="current-password">

                                @error('password')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        

                        <div class="form-group row mb-0">
                            <div class="col-md-8 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    {{ __('确认上传') }}
                                </button>

                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
  • 访问: http://192.168.1.214:2000/upload

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值