您现在的位置是:首页 > 博客日记 > Php Php

Laravel操作上传文件的方法

2019-07-08 19:02:17 【Php】 人已围观

Laravel操作上传文件的方法

1、获取上传的文件

  1. $file=$request->file('file');

2、获取上传文件的文件名(带后缀,如abc.png)

  1. $filename=$file->getClientOriginalName();

3、获取上传文件的后缀(如abc.png,获取到的为png)

  1. $fileextension=$file->getClientOriginalExtension();

4、获取上传文件的大小

  1. $filesize=$file->getClientSize();

5、获取缓存在tmp目录下的文件名(带后缀,如php8933.tmp)

  1. $filaname=$file->getFilename();

6、获取上传的文件缓存在tmp文件夹下的绝对路径

  1. $realpath=$file->getRealPath();

7、将缓存在tmp目录下的文件移到某个位置,返回的是这个文件移动过后的路径

  1. $path=$file->move(path,newname);

move()方法有两个参数,第一个参数是文件移到哪个文件夹下的路径,第二个参数是将上传的文件重新命名的文件名

8、检测上传的文件是否合法,返回值为true或false

  1. $file->isValid()

上传到本地服务器

  1. $file = $request->file('image');
  2. //验证是否上传成功
  3. if ($file->isValid()) {
  4. $originalName = $file->getClientOriginalName();// 原文件名
  5. $ext = $file->getClientOriginalExtension();// 扩展名
  6. $type = $file->getClientMimeType();
  7. $realPath = $file->getRealPath();// 临时绝对路径
  8. $fileName = date('Ymd').'/'.uniqid().'.'.$ext;// 自定义文件名
  9. //存储
  10. $bool = Storage::disk('upload')->put($fileName, file_get_contents($realPath));
  11. dd($bool);
  12. }

文件上传到第三方平台(OSS/七牛云)

  1. 安装vendor扩展: composer require tinymeng/uploads -vvv

TinyMeng扩展(下载以及使用方法)

  1. use tinymeng\tools\Strings;
  2. /**
  3. * Name: 文件上传
  4. * Author: Tinymeng <666@majiameng.com>
  5. * @param $data
  6. * @return bool|string
  7. * @throws \Exception
  8. */
  9. protected function uploadFile($data){
  10. $file=$request->file('file');
  11. $save_dir = "file";
  12. //获取文件信息
  13. $data = [
  14. 'type'=>$this->type,
  15. 'save_dir'=>save_dir,
  16. 'file_name'=>$file->getClientOriginalName(),
  17. 'file_type'=>$file->file_type,
  18. 'file_ext'=>$file->getClientOriginalExtension(),
  19. 'file_size'=>$file->getClientSize(),
  20. ];
  21. $data['file_md5'] = md5(implode(',',$data));
  22. //使用file_md5,查询数据库是否存在此文件
  23. //如有文件返回文件信息,没有上传到oss
  24. try{
  25. //生成文件存储路径
  26. $filePath = $data['save_dir'] . '/' . date('Y-m-d', time()) . '/';//图片路径
  27. $saveFileName = Strings::generateRandomString(16) . '.' . $data['file_ext'];//图片名称+扩展名
  28. $saveFilePath = $filePath . $saveFileName; //路径+图片名称
  29. $tmp_name = $this->file->getRealPath();//上传的文件缓存在tmp文件夹下的绝对路径
  30. //文件存储到第三方
  31. $config = config('params.oss.img-meng');//请查看'https://github.com/majiameng/uploads'配置
  32. $drive = Upload::oss($config);//上传到阿里云oss
  33. //$drive = Upload::qiniu($config);//上传到七牛云
  34. $result = $drive->uploadFile($saveFilePath, $tmp_name );//file上传文件
  35. if($result === true){
  36. return $saveFilePath;
  37. }
  38. return false;
  39. }catch (\Exception $exception){
  40. CommonReturn::fail(StatusCode::COMMON_CAPTCHA_INVALID,$exception->getMessage());
  41. }
  42. }


关注TinyMeng博客,更多精彩分享,敬请期待!
 

很赞哦! ()