php laravel 帧 该文件上传

好,我认可个人忠告.php

今天laravel框架编写一个文件上传部分.总能找到不正确的路径.可是,终于攻克.laravel

如下我分享一下本身的学习体会吧.算法

clientwindows

<form method="POST" action="" enctype="multipart/form-data">缓存

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

    <input type="submit" name="submit" value="Submit" />app

</form>框架

提交到server端.函数

$file = Input::file('myfile');学习

if($file -> isValid()){

    //检验一下上传的文件是否有效.

    $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前面的分号去掉就能够.固然要从新启动server.

  最后咱们使用

  $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;

  利用日期和client文件名称结合 使用md5 算法加密获得结果.不要忘记在后面加上文件原始的拓展名.

  好吧.開始原本想敲代码的,现在搞成这幅德行了..

  Best Wishes.

}

相关文章
相关标签/搜索