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 相关文章推荐
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
php at(@)符号的用法简介
Jul 11 PHP
PHP 面向对象 final类与final方法
May 05 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
Jun 28 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
ThinkPHP实现附件上传功能
Apr 27 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
Laravel find in set排序实例
Oct 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 文件状态缓存带来的问题
2008/12/14 PHP
php上传文件常见问题总结
2015/02/03 PHP
PHP导入导出Excel代码
2015/07/07 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
一些Python中的二维数组的操作方法
2015/05/02 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
2019/01/15 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
python 元组的使用方法
2020/06/09 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
工业设计毕业生自荐信
2014/04/13 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
抗洪救灾标语
2014/10/08 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
信访维稳承诺书
2015/05/04 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
SQL Server中搜索特定的对象
2022/05/25 SQL Server