博主信息
博文 81
粉丝 1
评论 0
访问量 146949
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
larvael 文件上传 获取文件的所有信息 访问storage目录下文件
有什么是忘不了的的博客
原创
998人浏览过

文件上传:

    视图

<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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学