-
文件系统:
- 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