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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
FleaPHP的安全设置方法
Sep 15 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
对象失去焦点时自己动提交数据的实现代码
Nov 06 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 PHP
php调整服务器时间的方法
Apr 03 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
Sep 23 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
PHP常用日期加减计算方法实例小结
Jul 31 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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
php cli 小技巧
2013/06/03 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
destoon二次开发入门示例
2014/06/20 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
js的2种继承方式详解
2014/03/04 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
js实现内置计时器
2019/12/16 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
区分python中的进程与线程
2020/08/13 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
一道SQL面试题
2012/12/31 面试题
大学生社团活动总结
2014/04/26 职场文书
演讲比赛策划方案
2014/06/11 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python