laravel上传

来源:互联网 发布:昆明理工大学网络 编辑:程序博客网 时间:2024/06/12 22:27
$file=Input::file('photo');if($file->isValid()){    //获取文件名称    $clientName = $file -> getClientOriginalName();    //临时文件路径    $realPath = $file -> getRealPath();    //文件扩展名    $entension = $file -> getClientOriginalExtension();    //媒体类型    $mimeTye = $file -> getMimeType();    //新文件名    $newName=time()."_".rand(1111,9999).".".$entension;    //移动文件    $path = $file -> move('style/images',$newName);    //替换\    $path='/'.str_replace('\\','/',$path);    }

$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前面的分号去掉即可.当然要重启服务器.  

最后我们使用  $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; 

文/Sugar_ping(简书作者)原文链接:http://www.jianshu.com/p/76ba6a417561著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0
原创粉丝点击