您现在的位置: 首页 > 开发编程 > Laravel教程 > 正文

Laravel5.4上传头像使用七牛对象存储

作者:admin来源:网络浏览:时间:2017-10-11 19:28:19我要评论
分享到
图片上传,以用户头像avatar为例,为节省本地磁盘,依托七牛的CDN节点加快访问,从而选择七牛的对象存储来保存avatar.
下述,以流程概述为主,据遇到的实际问题和需求来展开,仅列出关键代码。

技术基础

Laravel5.4.36+webuploader(异步上传)        //笔者环境如此

延伸

Laravel5.4上传头像使用七牛对象存储

也可在composer.lock中查看

Laravel5.4上传头像使用七牛对象存储

普通上传的实现

  1. public function webUpload(Request $request){ 
  2.     //1.是否有文件上传及上传文件的有效性判断(file,是webUploader插件用来接收文件的) 
  3.     if ($request->hasFile('file') && $request->file('file')->isValid()) { 
  4.  
  5.         $newFileName =  md5($request->file('file')->getClientOriginalName() . time()) 
  6.                         . '.' 
  7.                         . $request->file('file')->getClientOriginalExtension(); 
  8.  
  9.         //2.保存到该磁盘(为啥?通过检查/storage目录的.gitignore,了解到该目录下的文件才能被提交;且在软链接的配置后可直接访问) 
  10.         //文件名重复就会覆盖=>因此要回到上一步=>自定义文件名 $newFileName 
  11.         Storage::disk('public')->put($newFileName, File::get($request->file('file')->path()));//Storage门面确认存储位置,File门面获取文件全部内容 
  12.  
  13.         //3.返回结果 www.bcty365.com B5教程网 
  14.         return [            //laravel中会自动处理,返回成json数据 
  15.             'code' => 1, 
  16.             'message' => '文件上传成功'
  17.             //4.返回的必须是/public下可直接访问的图片地址. 
  18.             //因laravel中站点是直接指向/public的,因此图片也要在/public下才可以(而如前所设,图片被保存在了/storage/app/public) 
  19.             //=>此时可通过软链接配置来达到快捷访问的效果 
  20.             'path' => '/storage/' . $newFileName 
  21.         ]; 
  22.     } 
  23.     return [ 
  24.         'code' => 0, 
  25.         'message' => $request->file('file')->getErrorMessage(), 
  26.     ]; 

简要说明

软链接配置

php artisan storage:link

命令参考及最后效果

Laravel5.4上传头像使用七牛对象存储

Laravel5.4上传头像使用七牛对象存储

普通上传代码中,提及的图片保存的实际路径

Laravel5.4上传头像使用七牛对象存储

如上步骤,既已实现本地磁盘的存储,那么七牛上传就不在话下了.只不过是换了个保存图片的地址而已.

七牛上传的实现
1.如上所述,已实现了avatar的普通上传。七牛上传,则在该代码基础上来修改.
2.用七牛=>注册七牛=>选择并新建对象存储空间=>从而得到[空间名字和测试域名]
官网 https://www.qiniu.com/

Laravel5.4上传头像使用七牛对象存储

Laravel5.4上传头像使用七牛对象存储


3.借助第三方集成的SDk来处理上传

https://github.com/zgldh/qini...

Laravel5.4上传头像使用七牛对象存储

修改普通上传的代码,有两处:

存储位置
Storage::disk('qiniu')->put($newFileName, File::get($request->file('file')->path()));
返回图片地址
'path' => Storage::disk('qiniu')->getDriver()->downloadUrl($newFileName), //这里要返回的是七牛云存储的图片的路径(第三方提供的文档中查找可用方法)

响应数据的检查

Laravel5.4上传头像使用七牛对象存储

html中一并提交该图片的返回地址到DB,那么DB中就可查看到相关信息了
相关热词搜索: Laravel 七牛对象存储