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 05 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
如何在php中正确的使用json
Aug 06 PHP
PHP中捕获超时事件的方法实例
Feb 12 PHP
php array_values 返回数组的值实例详解
Nov 17 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 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写的资源下载防盗链类分享
2014/05/12 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
JS数组splice操作实例分析
2019/10/12 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
js实现碰撞检测
2021/01/29 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
python发布模块的步骤分享
2014/02/21 Python
详解supervisor使用教程
2017/11/21 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
Python for循环与range函数的使用详解
2019/03/23 Python
wxPython实现整点报时
2019/11/18 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
心理健康日活动总结
2014/05/08 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
初中团委工作总结
2015/08/13 职场文书
导游词之桂林山水
2019/09/20 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
html form表单基础入门案例讲解
2021/07/21 HTML / CSS