#檔案上傳
Laravel的檔案系統是基于Frank de Jonge的Flysystem擴充包
提供了簡單的接口,可以操作本地端空間、AmazonS3、Rackspace Cloud Storage
可以非常簡單的切換不同的儲存方式,但仍使用相同的API操作
支援 local ftp s3 rackspace預設是local
s3是亞馬遜的配置,在國内用的很少
#1.配置
config/filesystems.php
'uploads' => [
//本地驅動
'driver' => 'local',
//上傳的路徑
'root' => storage_path('app/uploads'),
// 'root' => public_path('uploads'),
這裡一般都會寫在public目錄下面,因為好調用,好調試
],
//這是上傳的檔案大緻結果名字2333
../storage/app/uploads/2018-03-22-21-35-43-5ab3b12f49607.jpg
upload模闆
@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" 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" 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
注意檔案上傳的格式enctype="multipart/form-data"
#2控制器的相關代碼
public function upload(Request $request)
{
if($request->isMethod('POST'))
{
// var_dump($_FILES);
// exit;
$file = $request->file('source');
// dd($file);
// exit;
//判斷檔案是否上傳成功
if($file->isValid())
{
//原檔案名
$originalName = $file->getClientOriginalName();
//擴充名
$ext = $file->getClientOriginalExtension();
//檔案類型MImetype
$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);
}
}
return view('student.upload');
}