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 相关文章推荐
php入门小知识
Mar 24 PHP
php的access操作类
Apr 09 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
php中stdClass的用法分析
Feb 27 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
php注册登录系统简化版
Dec 28 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 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实现CSV文件的导入和导出类
2015/03/24 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
Python编码时应该注意的几个情况
2013/03/04 Python
python实现的阳历转阴历(农历)算法
2014/04/25 Python
Python3 log10()函数简单用法
2019/02/19 Python
Python 函数list&amp;read&amp;seek详解
2019/08/28 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
利用指针变量实现队列的入队操作
2012/04/07 面试题
校园网站的创业计划书范文
2013/12/30 职场文书
有创意的广告词
2014/03/18 职场文书
婚前保证书
2014/04/29 职场文书
2014年安全生产责任书
2014/07/22 职场文书
作风转变心得体会
2014/09/02 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
文员岗位职责范本
2015/04/16 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis