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(5) 类和对象
Feb 16 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
PHP的引用详解
Feb 22 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
php pdo操作数据库示例
Mar 10 PHP
PHP CURL与java http使用方法详解
Jan 26 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 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程序员的技术成长规划
2016/03/25 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
简述Angular 5 快速入门
2017/11/04 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
Python绘制热力图示例
2019/09/27 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
优秀求职信范文分享
2014/01/26 职场文书
股东合作协议书范本
2014/04/14 职场文书
企业法人代表任命书
2014/06/06 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
2016年父亲节寄语
2015/12/04 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js