Laravel - 上手實現 - 文件上傳、保存到 public 目錄下


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
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM