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 Mssql操作简单封装支持存储过程
Dec 11 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
从php核心代码分析require和include的区别
Jan 02 PHP
php抽奖小程序的实现代码
Jun 18 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php去除换行(回车换行)的三种方法
Mar 26 PHP
php根据年月获取季度的方法
Mar 31 PHP
配置php.ini实现PHP文件上传功能
Nov 27 PHP
PHP中调用SVN命令更新网站方法
Jan 07 PHP
php高清晰度无损图片压缩功能的实现代码
Dec 09 PHP
YII框架常用技巧总结
Apr 27 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 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框架Symfony2经典入门教程
2014/07/08 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
Python中join和split用法实例
2015/04/14 Python
Python的gevent框架的入门教程
2015/04/29 Python
python处理二进制数据的方法
2015/06/03 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
培训专员岗位职责
2014/02/26 职场文书
《火烧云》教学反思
2014/04/12 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书