Laravel 5.2 教程 - 文件上傳

一溉贿、簡介

Laravel 有很棒的文件系統(tǒng)抽象層结闸,是基于 Frank de Jonge 的 Flysystem 擴展包。 Laravel 集成的 Flysystem 提供了簡單的接口芬膝,可以操作本地端空間、 Amazon S3 撼班、 Rackspace Cloud Storage 。更方便的是垒酬,它可以非常簡單的切換不同保存方式砰嘁,但仍使用相同的 API 操作件炉!

默認使用本地端空間。當然矮湘,你也可以設置多組磁盤斟冕,甚至在多個磁盤使用相同的驅(qū)動。Laravel文件系統(tǒng)提供了非常強大的功能缅阳,但是本文只介紹常用的文件上傳功能磕蛇。

本文通過介紹使用本地端空間來介紹Laravel中文件上傳的使用。

二十办、配置

文件系統(tǒng)的配置文件在 config/filesystems.php 文件中秀撇,此處我們新建一個uploads本地磁盤空間用于存儲上傳的文件,具體配置項及說明如下:

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default filesystem disk that should be used
    | by the framework. A "local" driver, as well as a variety of cloud
    | based drivers are available for your choosing. Just store away!
    |
    | Supported: "local", "ftp", "s3", "rackspace"
    |
    */

    // 默認使用本地端空間 支持 "local", "ftp", "s3", "rackspace"
    'default' => 'local',

    /*
    |--------------------------------------------------------------------------
    | Default Cloud Filesystem Disk
    |--------------------------------------------------------------------------
    |
    | Many applications store files both locally and in the cloud. For this
    | reason, you may specify a default "cloud" driver here. This driver
    | will be bound as the Cloud disk implementation in the container.
    |
    */

    // 云存儲使用 Amazon S3
    'cloud' => 's3',

    /*
    |--------------------------------------------------------------------------
    | Filesystem Disks
    |--------------------------------------------------------------------------
    |
    | Here you may configure as many filesystem "disks" as you wish, and you
    | may even configure multiple disks of the same driver. Defaults have
    | been setup for each driver as an example of the required options.
    |
    */

    'disks' => [

        // 本地端的local空間
        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        // 本地端的public空間
        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'visibility' => 'public',
        ],

        // 新建一個本地端uploads空間(目錄) 用于存儲上傳的文件
        'uploads' => [

            'driver' => 'local',

            // 文件將上傳到storage/app/uploads目錄
            'root' => storage_path('app/uploads'),

            // 文件將上傳到public/uploads目錄 如果需要瀏覽器直接訪問 請設置成這個
            //'root' => public_path('uploads'),
        ],

        // Amazon S3 相關配置
        's3' => [
            'driver' => 's3',
            'key' => 'your-key',
            'secret' => 'your-secret',
            'region' => 'your-region',
            'bucket' => 'your-bucket',
        ],

    ],

];

三向族、代碼實現(xiàn)文件上傳

1. 控制器代碼

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Storage;
use App\Http\Requests;


class FileController extends Controller
{

    // 文件上傳方法
    public function upload(Request $request)
    {

        if ($request->isMethod('post')) {

            $file = $request->file('picture');

            // 文件是否上傳成功
            if ($file->isValid()) {

                // 獲取文件相關信息
                $originalName = $file->getClientOriginalName(); // 文件原名
                $ext = $file->getClientOriginalExtension();     // 擴展名
                $realPath = $file->getRealPath();   //臨時文件的絕對路徑
                $type = $file->getClientMimeType();     // image/jpeg

                // 上傳文件
                $filename = date('Y-m-d-H-i-s') . '-' . uniqid() . '.' . $ext;
                // 使用我們新建的uploads本地存儲空間(目錄)
                $bool = Storage::disk('uploads')->put($filename, file_get_contents($realPath));
                var_dump($bool);

            }

        }

        return view('upload');
    }
}

2. 最基礎的 upload.blade.php 模板代碼:

<form method="post" enctype="multipart/form-data" >    
    <input type="file" name="picture">
    <button type="submit"> 提交 </button>
</form>

獲取到文件后呵燕,即可對文件進行各種處理。如果是圖片件相,可以進行各種縮放及裁剪操作再扭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夜矗,隨后出現(xiàn)的幾起案子泛范,更是在濱河造成了極大的恐慌,老刑警劉巖紊撕,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罢荡,死亡現(xiàn)場離奇詭異,居然都是意外死亡对扶,警方通過查閱死者的電腦和手機区赵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辩稽,“玉大人惧笛,你說我怎么就攤上這事从媚〕研梗” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵拜效,是天一觀的道長喷众。 經(jīng)常有香客問我,道長紧憾,這世上最難降的妖魔是什么到千? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮赴穗,結(jié)果婚禮上憔四,老公的妹妹穿的比我還像新娘膀息。我一直安慰自己,他們只是感情好了赵,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布潜支。 她就那樣靜靜地躺著,像睡著了一般柿汛。 火紅的嫁衣襯著肌膚如雪冗酿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天络断,我揣著相機與錄音裁替,去河邊找鬼。 笑死貌笨,一個胖子當著我的面吹牛弱判,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躁绸,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼裕循,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了净刮?” 一聲冷哼從身側(cè)響起剥哑,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淹父,沒想到半個月后株婴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡暑认,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年困介,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蘸际。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡座哩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粮彤,到底是詐尸還是另有隱情根穷,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布导坟,位于F島的核電站屿良,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惫周。R本人自食惡果不足惜尘惧,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望递递。 院中可真熱鬧喷橙,春花似錦啥么、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至似踱,卻和暖如春隅熙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背核芽。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工囚戚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轧简。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓驰坊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哮独。 傳聞我的和親對象是個殘疾皇子拳芙,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容