欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

laravel框架之文件上传

 
02 
03/*用laravel框架写一个文件上传的部分.分享一下自己的学习体会*/
04 
05 
06<form method="POST" action="" enctype="muitipart/form-data">
07    <input type="file" name="myfile" />
08    <input type="submit" name="submit" value="Submit" />
09</form>
10 
11 
12//提交到服务器端.
13 
14$file = Input::file('myfile');
15if($file -> isValid()){
16    //检验一下上传的文件是否有效.
17 
18    $clientName $file ->  getClientOriginalName();
19    $tmpName    $file ->  getFileName();     //缓存在tmp文件夹中的文件名例如php8933.tmp 这种类型的.
20    $realPath   $file ->  getRealPath();    //这个表示的是缓存在tmp文件夹下的文件的绝对路径
21 
22   //例如我的是:G:/xampp/tmp/php5A69.tmp
23   //这里要注意,如果我使用接下来的move方法之后, getRealPath() 就找不到文件的路径了.因为文件已经被移走了.
24   //所以这里道出了文件上传的原理,将文件上传的某个临时目录中,然后使用Php的函数将文件移动到指定的文件夹.
25 
26    $entension $file -> getClientOriginalExtension();   //上传文件的后缀.
27    $mimeTye   $file -> getMimeType();    //大家对mimeType应该不陌生了. 我得到的结果是 image/jpeg.
28   //这里要注意一点,以前我们使用mime_content_type(),在php5.3 之后,开始使用 fileinfo 来获取文件的mime类型.所以要加入 php_fileinfo的php拓展.windows下是 php_fileinfo.dll,在php.ini文件中将 extension=php_fileinfo.dll前面的分号去掉即可.当然要重启服务器.
29  ///最后我们使用
30  $path $file -> move('storage/uploads');
31 
32  //如果你这样写的话,默认是会放置在 我们 public/storage/uploads/php79DB.tmp 
33  //貌似不是我们希望的,如果我们希望将其放置在app的storage目录下的uploads目录中,并且需要改名的话..
34  $path $file -> move(app_path().'/storage/uploads',$newName);
35  
36  //这里app_path()就是app文件夹所在的路径.$newName 可以是你通过某种算法获得的文件的名称.主要是不能重复产生冲突即可.  比如 $newName = md5(date('ymdhis').$clientName).".".$extension;
37  //利用日期和客户端文件名结合 使用md5 算法加密得到结果.不要忘记在后面加上文件原始的拓展名.
38 
39}

来自 http://www.learnphp.cn/kuangjiajiaocheng/Lavaveljiaocheng/2015/0202/326.html

普通分类: