文件上传:
视图:
<form action="/index/show/123" enctype="multipart/form-data" method="post" accept-charset="utf-8"> @csrf <input type="file" name="file"> <input type="submit" > </form>
控制器:
先在项目根目录下执行 php artisan storage:link public function upload(Request $request){ if ($request->hasFile('file') && $request->file('file')->isValid()) { $file = $request->file('file'); $size = $file->getSize(); # 8016 if ($size >= 2097152){ return $this->error('2002','文件不得大于2mb'); } $extension = $file->extension(); # "png" if (!in_array(strtolower($extension),['png','jpg','jpeg','gif'])){ return $this->error('2002','文件类型不正确'); } $fileName = date('Ymd',time()); $time = date('YmdHis',time()); $rand = rand(10000,99999); $name = $time . $rand .'.'. $extension; $storeAs = $file->storeAs('images/'.$fileName,$name,'public'); //这里会返回访问文件的路径 return $this->success('/storage/'.$storeAs); } } //验证文件是否被上传 if ($request->hasFile('file')) { //验证文件是否有效 $request->file('file')->isValid() //获取上传的文件信息 $file = $request->file('file'); //获取文件大小 $size = $file->getSize() # 8016 //获取文件路径 基本没有 $path = $file->path() # "C:\Windows\php1BFB.tmp" //获取文件全路径 $path = $file->getClientOriginalName() # "AAZZPXW(7HR8`T4[4FD4_[D.png" //获取文件扩展名 $extension = $file->extension() # "png" //文件保存 不自定义文件名 $store = $file->store('images','public') #参数1文件夹名,参数二选填,使用哪种上传配置。下面有介绍哦。 //文件保存,自定义文件名 $storeAs = $file->storeAs('images','logo.png','public') #参数一文件夹名,参数二文件名称,参数三选择上传配置 //获取上传文件的内容 基本没有 $get = $file->get() }
文件上传配置:config\filesystems.php
'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], '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'), 'endpoint' => env('AWS_ENDPOINT'), ], ],
上面的代码是laravel默认的代码。
‘local’是默认配置,
‘local’‘public’都是吧文件保存在本地项目中 ‘s3’是存储在亚马逊的磁盘位置。你还可以自定义更多配置
'driver' 文件保存文件的位置。‘local’代表本地项目
‘root’文件夹位置storage_path('app/public') 指向的是 storage\app\public文件
‘url' 表示的是文件的url
'visibility'表示的是可见性
一般只需要设置 'driver'和'root'就可以了。