欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Laravel - 上手实现 - 文件上传、保存到 public 目录下

程序员文章站 2022-03-22 19:02:14
PHP 中上手 Laravel 框架,除了要会增删改查,也应该了解了解文件上传。 ......

1、为了访问方便,将上传的文件保存在 public 目录下,需要进行修改配置。

找到 config/filesystems.php 文件然后修改 root、具体如下:

'local' => [
    'driver' => 'local',
    // 'root' => storage_path('app'),
    'root' => public_path()
],

'public' => [
    'driver' => 'local',
    // 'root' => storage_path('app/public'),
    'root' => public_path(),
    'url' => env('app_url').'/storage',
    'visibility' => 'public',
],

2、配置路由,指定上传页面;

// 上传页面
route::get('/upl', function(){
    return view('users.upload');
});

3、创建并编辑上传页面;

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>上传</title>
</head>

<body>
    <form action="upldo" method="post" enctype="multipart/form-data">
        <!-- 文件上传使用 post 提交方式、需要加 csrf 保护-->
        @csrf
        文件上传:
        <input type="file" name="file" id="">
        <input type="submit" value="提交">
    </form>
</body>

</html>

4、配置路由绑定控制器和方法,用于执行上传操作;

// 执行上传
route::post('/upldo', 'userscontroller@upldo');

5、在控制器接收数据,获取上传的文件信息;

/**
 * 文件上传
 */

public function upldo( request $request )
{
    // 获取上传的文件
    $file = $request->file('file');
    // 获得上传文件的原始名称 getclientoriginalname
    // 040106.jpg
    echo $file->getclientoriginalname();
    // 获取上传文件的文件扩展名 extension
    // jpg
    echo $extension = $file->extension();
    // 获取上传文件的大小 
    // 29514
    echo $file->getsize();
    // 检测上传的文件是否合法,返回值为true或false
    // 1
    echo $file->isvalid();
    // 获取上传后保存的路径
    // php/nktwzdr5l1zkeqkzc8yk36hpab6tsdkrvboyjlhq.jpeg
    echo $file->store('php');
    // 最终的保存路径是在 ../laravel7/public/php/nktwzdr5l1zkeqkzc8yk36hpab6tsdkrvboyjlhq.jpeg
}