Laravel 5.5 文件上传使用 store 到 public 目录

一、需求

Laravel 5.3+(应该是) 之后,如果使用的驱动是 local 的话,如果保存文件不用 move 而是使用 store,则会将 storage/app/ 作为文件上传的基本路径。

现在需要使用 store 存储文件,但是存储的路径依旧想保存在 public/uploads 中,并且通过日期创建文件夹, 使用默认的文件名 hash 。

最终的结果应该是这样子的:

1.jpg

二、配置修改

文件系统的配置文件是在 : config/filesystems.php 中

主要修改的是 disks > local 的配置,更改 root ,使用了 public_path() 辅助函数:

'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => public_path('uploads'),
        ],
    // 这里省略了其他的配置
]

三、文件上传的 php 代码

简单的一个示例代码,主要说明如何根据日期创建文件夹:

下面的代码中,我重命名了文件名

    public function upload(Request $request){
        if(!$request->hasFile('img')){
            $request->session()->flash('error_msg','文件不存在');
            return back();
        }
        $img = $request->file('files');
        // 获取后缀名
        $ext = $img->extension();
        // 新文件名
        $saveName =time().rand().".".$ext;
        // 存储文件 已经不使用 move 这种方式
        // $img->move('./uploads/'.date('Ymd'),$saveName);
        // 使用 store 存储文件
        $path = $img->store(date('Ymd'));
        return back()->withInput(['url'=>'uploads/'.$path]);
    }

上面代码通过 store(date('Ymd')) 会自动的创建日期文件夹,之所以在这里生成,而不是在配置文件中生成,主要原因是:

在 store 中设置 date 的方式来创建文件夹,$path 会得到包含文件夹的路径,不然自己得去拼接文件夹,总是需要这个日期文件夹的操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值