资讯专栏INFORMATION COLUMN

Laravel使用之七牛对象存储

周国辉 / 1132人阅读

摘要:图片上传,以用户头像为例为节省本地磁盘,依托七牛的节点加快访问,从而选择七牛的对象存储来保存下述,以流程概述为主据遇到的实际问题和需求来展开仅列出关键代码。

图片上传,以用户头像avatar为例

为节省本地磁盘,依托七牛的CDN节点加快访问,从而选择七牛的对象存储来保存avatar.
下述,以流程概述为主,据遇到的实际问题和需求来展开,仅列出关键代码。

技术基础

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

延伸

,也可在composer.lock中查看

普通上传的实现
    public function webUpload(Request $request){
        //1.是否有文件上传及上传文件的有效性判断(file,是webUploader插件用来接收文件的)
        if ($request->hasFile("file") && $request->file("file")->isValid()) {

            $newFileName =  md5($request->file("file")->getClientOriginalName() . time())
                            . "."
                            . $request->file("file")->getClientOriginalExtension();

            //2.保存到该磁盘(为啥?通过检查/storage目录的.gitignore,了解到该目录下的文件才能被提交;且在软链接的配置后可直接访问)
            //文件名重复就会覆盖=>因此要回到上一步=>自定义文件名 $newFileName
            Storage::disk("public")->put($newFileName, File::get($request->file("file")->path()));//Storage门面确认存储位置,File门面获取文件全部内容

            //3.返回结果
            return [            //laravel中会自动处理,返回成json数据
                "code" => 1,
                "message" => "文件上传成功",
                //4.返回的必须是/public下可直接访问的图片地址.
                //因laravel中站点是直接指向/public的,因此图片也要在/public下才可以(而如前所设,图片被保存在了/storage/app/public)
                //=>此时可通过软链接配置来达到快捷访问的效果
                "path" => "/storage/" . $newFileName
            ];
        }
        return [
            "code" => 0,
            "message" => $request->file("file")->getErrorMessage(),
        ];
    }

简要说明

软链接配置

php artisan storage:link


命令参考及最后效果

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

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

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

官网 https://www.qiniu.com/

图示一:新建

图示二:查询

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

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

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

存储位置

   Storage::disk("qiniu")->put($newFileName, File::get($request->file("file")->path()));

返回图片地址

"path" => Storage::disk("qiniu")->getDriver()->downloadUrl($newFileName),    //这里要返回的是七牛云存储的图片的路径(第三方提供的文档中查找可用方法)


5.响应数据的检查

6.html中一并提交该图片的返回地址到DB,那么DB中就可查看到相关信息了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25945.html

相关文章

  • 创业初期数据库云备份之laravel解决方案

    摘要:在中注册发布之后,我们会产生一个监听器,文件已经存储在本地,获取该文件信息将文件上传至七牛云存入数据库上面的部分代码没写,大家可以去自己去试下,加深对七牛云及的理解,完全可以达到目的。 最近项目用户徒增,购买的服务器还是和公司另外一个项目共用的同一台服务器,想着要是服务器崩了,还没个容灾方案,万一。。。不得被用户整死 选用方案 laravel-backup 配合laravel的任务调...

    2bdenny 评论0 收藏0
  • Codeigniter 4.0-dev 版源码学习笔记之七—— View 视图

    摘要:行处理视图文件名后缀。结语从源码上看,使用了原始作为模版机制使得视图逻辑非常简单。无非也就是把视图进来,用输出缓冲把执行结果拿到即可。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 CI 的 View 没有像 Laravel 等一些流行框架一样设计的那么重,有自己的一套模版机制,CI 一直采用纯天然的 PHP 模板形式,纯天然的好处是不用再学习一套模板语言了,缺...

    LiangJ 评论0 收藏0
  • 关于七牛云正确使用姿势探索

    摘要:,在后续测试时遇到一个诡异,当文件过大时,任务脚本上传到七牛云失败。当我遇到大文件无法上传到七牛云时,断点调试到这里,发现返回的是。后来还真被我找到了,七牛云官方提供一个脚本工具。 业务场景 需求 我们项目有一个文件上传需求,需要从客户端上传到七牛云的对象存储和自己的应用服务器上。这里使用七牛云主要是实现下载分发。应用服务器需要留一份是因为后续需要做文件分析(并且是上传后需要立马分析出...

    3fuyu 评论0 收藏0
  • Laravel+OSS使用笔记

    摘要:为什么使用对象存储对象存储是云服务提供商面向企业和个人开发者提供的高可用,高稳定,强安全的云端存储服务。什么是阿里云对象存储服务,简称,是阿里云提供的海量安全低成本高可靠的云存储服务。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是永不停息的追求。 个人网站:https:/...

    CloudwiseAPM 评论0 收藏0
  • Laravel5-Markdown-Editor 在线编辑器

    摘要:是基于封装的在线编辑器,支持项目。已集成本地七牛云阿里云文件存储。更新记录完成在线编辑器主程序,且集成本地七牛阿里云存储。 Laravel5-Markdown-Editor Laravel5-Markdown-Editor 是基于 editor.md 封装的 Markdown 在线编辑器,支持 Laravel5 项目。已集成本地、七牛云、阿里云文件存储。 更新记录 2017-11-09...

    MoAir 评论0 收藏0

发表评论

0条评论

周国辉

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<