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输出控制功能在简繁体转换中的应用
Oct 09 PHP
PHP安装攻略:常见问题解答(一)
Oct 09 PHP
php的POSIX 函数以及进程测试的深入分析
Jun 03 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
四个PHP非常实用的功能
Sep 29 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
Oct 10 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 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 google或baidu分页代码
2009/11/26 PHP
js资料toString 方法
2007/03/13 Javascript
json简单介绍
2008/06/10 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
工程部经理岗位职责
2013/12/08 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
教育读书笔记
2015/07/02 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书