博客列表 >larvael 文件上传 获取文件的所有信息 访问storage目录下文件

larvael 文件上传 获取文件的所有信息 访问storage目录下文件

有什么是忘不了的的博客
有什么是忘不了的的博客原创
2020年06月14日 18:44:03822浏览

文件上传:

    视图

<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'就可以了。


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议