php laravel 框架 之文件上傳

客戶端  php

<form method="POST" action="" enctype="muitipart/form-data">  算法

    <input type="file" name="myfile" />  windows

    <input type="submit" name="submit" value="Submit" />  緩存

</form>  服務器

提交到服務器端.  php7

$file = Input::file('myfile');  app

if($file -> isValid()){  函數

    //檢驗一下上傳的文件是否有效.  ui

         $clientName = $file -> getClientOriginalName();      加密

    $tmpName = $file ->getFileName();    //    緩存在tmp文件夾中的文件名    例如    php8933.tmp 這種類型的.  

   $realPath = $file -> getRealPath();    //這個表示的是緩存在tmp文件夾下的文件的絕對路徑  

        //例如個人是:      G:\xampp\tmp\php5A69.tmp      

       //這裏要注意,若是我使用接下來的move方法以後, getRealPath() 就找不到文件的路徑了.由於文件已經被移走了.      

        因此這裏道出了文件上傳的原理,將文件上傳的某個臨時目錄中,而後使用Php的函數將文件移動到指定的文件夾.      

       $entension = $file -> getClientOriginalExtension(); //上傳文件的後綴.      

    $mimeTye = file -> getMimeType();//你們對mimeType應該不陌生了. 我獲得的結果是 image/jpeg.  

        //這裏要注意一點,之前咱們使用      mime_content_type()      ,在php5.3 以後,開始使用 fileinfo 來獲取文件的mime類型.因此要加入 php_fileinfo的php拓展.windows下是 php_fileinfo.dll,在php.ini文件中將 extension=php_fileinfo.dll前面的分號去掉便可.固然要重啓服務器.      

  最後咱們使用  

  $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 算法加密獲得結果.不要忘記在後面加上文件原始的拓展名.  

相關文章
相關標籤/搜索