文件上传:
视图:
<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'就可以了。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号