这算是观看慕课网是的视频然后写的一篇笔记
视频源链接在此: https://www.imooc.com/video/13339
介绍:Laravel自己的文件系统
Laravel的文件系统是基于Frank de Jonge的Flysystem扩展包
提供了简单的接口,可以操作本地端空间,Amazon S3 、Rackspace Cloud Storage
可以非常简单的切换不同的保存方式,但仍使用相同的API操作
实际操作步骤如下:
1、首先在config下找到filesystems.php文件上传的配置文件
新建一个专门储存上传文件的磁盘
在disks下,增加一个本地的uploads磁盘
'uploads' => [
'driver' => 'local',
'root' => storage_path('app/uploads'),
'url' => env('APP_URL').'/storage',
],
待会儿上传文件成功之后,文件会保存在storage/app/uploads下面
2、新建一个专门处理文件的Controller
项目根目录命令行运行:
php artisan make:controller FileController
在FileController中新建一个upload的方法
在routes/api.php中新增路由信息
路由前改为any表示可以接受任何类型的请求
Route::any('/biz/file/upload', 'FileController@upload');
3、在resources/views/下新建视图file/upload.blade.php
@extends('layouts.app')
@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" >
<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" required>
</div>
</div>
<div class="form-group">
<div class="col-md-8 col-md-offset-4">
<button type="submit" class="btn btn-primary">
确认上传
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
将login.blade.php的内容复制过来并删掉不需要的部分,修改文字内容,特别注意修改标黄的内容
4、然后在
FileController的upload方法中加载file.upload的视图
public function upload(Request $request){
return view('file.upload');
}
5、然后完善
FileController的upload方法
public function upload(Request $request){
if($request->isMethod('POST')){
// var_dump($_FILES);
$file = $request->file('source');
// dd($file);
//文件是否上传成功
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);
}
exit;
}
return view('file.upload');
}
点击“选择文件”按钮,选择要上传的文件,再点击“确认上传”按钮
然后返回boolean true ,表示上传文件成功
在storage/app/uploads可以看到上传的文件。