laravel接收上傳文件獲取各種文件名和信息

$file = Input::file(‘myfile’); 
    
    //檢驗一下上傳的文件是否有效.
    if(if($file -> isValid())){        
        
        //原上傳文件名稱
        $clientName = $file -> getClientOriginalName(); 

        //文件大小
        $file_size = $file -> getClientSize();
        
        // 緩存在tmp文件夾中的文件名 例如 php8933.tmp 這種類型的. 
        $tmpName = $file ->getFileName(); 
        
        /**
         *這個表示的是緩存在tmp文件夾下的文件的絕對路徑 
         *例如我的是: G:\xampp\tmp\php5A69.tmp 
         *這裏要注意,如果我使用接下來的move方法之後, getRealPath() 就找不到文件的路徑了.因爲文件已經被移走了.
         *所以這裏道出了文件上傳的原理,將文件上傳的某個臨時目錄中,然後使用Php的函數將文件移動到指定的文件夾. 
        **/
        $realPath = $file -> getRealPath(); 
        

        // 上傳文件的後綴. 
        $entension = $file -> getClientOriginalExtension(); 
        
        /*大家對mimeType應該不陌生了. 我得到的結果是 image/jpeg. 
         *這裏要注意一點,以前我們使用 mime_content_type() ,
         *在php5.3 之後,開始使用 fileinfo 來獲取文件的mime類型.
         *所以要加入 php_fileinfo的php拓展.windows下是 php_fileinfo.dll
         *在php.ini文件中將 extension=php_fileinfo.dll前面的分號去掉即可.
         *當然要重啓服務器.
        **/
        $mimeTye = file -> getMimeType();    


        /*最後我們使用 $path = $file -> move(‘storage/uploads’); 如果你這樣寫的話,
         *默認是會放置在 我們 public/storage/uploads/php79DB.tmp 貌似不是我們希望的,
         *如果我們希望將其放置在app的storage目錄下的uploads目錄中,並且需要改名的話..
         *$path = $file -> move(app_path().’/storage/uploads’,$newName);
         *這裏app_path()就是app文件夾所在的路徑. 
         *$newName 可以是你通過某種算法獲得的文件的名稱.主要是不能重複產生衝突即可. 
         *比如 $newName = md5(date(‘ymdhis’).$clientName).".".$extension; 
         *利用日期和客戶端文件名結合 使用md5 算法加密得到結果.不要忘記在後面加上文件原始的拓展名.*/

         $path = $file -> move(app_path().'/storage/uploads',$newName); 
      
        
        
        
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章