Laravel框架实现的上传图片到七牛功能详解


Posted in PHP onSeptember 06, 2019

本文实例讲述了Laravel框架实现的上传图片到七牛功能。分享给大家供大家参考,具体如下:

新建项目

这里直接用一个新的Laravel5.3的项目进行演示,其他版本都是一样不会影响功能,顶多是路由位置不一样而已。已有项目的小伙伴可直接跳过次段。

# 新建项目
laravel new laravel-qiniu
cd laravel-qiniu

安装Laravel七牛扩展包

过Composer安装:

composer require zgldh/qiniu-laravel-storage

然后在 config/app.php 中注册服务提供者:

zgldh\QiniuStorage\QiniuFilesystemServiceProvider::class

接下来在 config/filesystems.php 里的disks中新增七牛配置:

'qiniu' => [
  'driver' => 'qiniu',
  'domains' => [
    'default'  => 'xxxxx', //你的七牛域名
    'https'   => 'xxxxx',     //你的HTTPS域名
    'custom'  => 'xxxxx',   //你的自定义域名
   ],
  'access_key'=> '', //AccessKey
  'secret_key'=> '', //SecretKey
  'bucket'  => '', //Bucket名字
  'notify_url'=> '', //持久化处理回调地址
],

OK,扩展包的安装就暂时介绍到这里,接下来我们要去七牛注册一个账号并且将上面的配置完善。

七牛账号注册及配置

先去七牛注册一个账号,点击官网的注册会让我们选择用户类型,这里我就选择个人用户。

接下来按照流程来进项注册就OK了,我就不演示给大家看了。由于我的手机号已经注册了,这里只能给大家看一下我已经添加了存储对象的实例了。

OK ,简单的用图给大家看一下七牛的默认域名及自定义域名在哪里看。下面给大家看一下七牛的秘钥的位置:

点击秘钥管理,就可与看到个人七牛的秘钥了:

七牛在Laravel中的配置

上面已经介绍相关的配置在哪儿,现在我们要将这些配置在Laravel中使用:

上传图片到七牛

简单用一个示例来演示前端上传图片到后台后,用七牛的扩展上传图片

先在 resources\views 下新建 index.blade.php 视图

<!DOCTYPE html>
<html>
<head>
  <title>上传图片</title>
</head>
<body>
  <form method="post" action="" enctype="multipart/form-data">
    <input type="file" name="file">
    <button type="submit">上传图片</button>
  </form>
</body>
</html>

页面代码简单,没有任何样式(请原谅我偷懒),新建 UplaodController 上传文件控制器:

php artisan make:controller UploadController

实现上传方法:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use zgldh\QiniuStorage\QiniuStorage;
class UploadController extends Controller
{
  /**
   * 上传文件到七牛
   * @author 高伟
   * @date  2016-11-09T16:58:37+0800
   * @param Request         $request [description]
   * @return [type]              [description]
   */
  public function uploadFile(Request $request)
  {
    // 判断是否有文件上传
    if ($request->hasFile('file')) {
      // 获取文件,file对应的是前端表单上传input的name
      $file = $request->file('file');
      // Laravel5.3中多了一个写法
      // $file = $request->file;
      // 初始化
      $disk = QiniuStorage::disk('qiniu');
      // 重命名文件
      $fileName = md5($file->getClientOriginalName().time().rand()).'.'.$file->getClientOriginalExtension();
      // 上传到七牛
      $bool = $disk->put('iwanli/image_'.$fileName,file_get_contents($file->getRealPath()));
      // 判断是否上传成功
      if ($bool) {
        $path = $disk->downloadUrl('iwanli/image_'.$fileName);
        return '上传成功,图片url:'.$path;
      }
      return '上传失败';
    }
    return '没有文件';
  }
}

添加路由:

// 上传页面视图
Route::get('/upload',function ()
{
  return view('index');
});
// form提交到控制器路由
Route::post('upload','UploadController@uploadFile');

视图页面(resources\views\index.blade.php):

<!DOCTYPE html>
<html>
<head>
  <title>上传图片</title>
</head>
<body>
  <form method="post" action="{{url('upload')}}" enctype="multipart/form-data">
    {{csrf_field()}}
    <input type="file" name="file">
    <button type="submit">上传图片</button>
  </form>
</body>
</html>

OK,刷新页面就能看到上传后的url地址了。这里只是演示一个最简单的实例,路由定义、视图样式、及逻辑层处理大家按照自己的项目来就行了

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
Banner程序
Oct 09 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
PHP异步调用socket实现代码
Jan 12 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
php实现设计模式中的单例模式详解
Oct 11 PHP
ThinkPHP 3.2 数据分页代码分享
Oct 14 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
May 20 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
微信支付之JSAPI公众号支付详解
May 15 PHP
浅析PHP7 的垃圾回收机制
Sep 06 #PHP
PHP的介绍以及优势详细分析
Sep 05 #PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 #PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 #PHP
php生成微信红包数组的方法
Sep 05 #PHP
Laravel框架创建路由的方法详解
Sep 04 #PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 #PHP
You might like
php中的时间处理
2006/10/09 PHP
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
PHP+ajax分页实例简析
2015/12/07 PHP
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
jQuery实现延迟跳转的方法
2015/06/05 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[00:35]可解锁地面特效
2018/12/20 DOTA
一个超级简单的python web程序
2014/09/11 Python
python基本语法练习实例
2017/09/19 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
pandas数据处理进阶详解
2019/10/11 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
图书室管理制度
2014/01/19 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
公司人事任命通知
2015/04/20 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android