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 算法加密获得结果.不要忘记在后面加上文件原始的拓展名.  

相关文章
相关标签/搜索