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
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
10 个经典PHP函数
Oct 17 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
PHP eval函数使用介绍
Dec 08 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
浅谈PHP封装CURL
Mar 06 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
wxPython的安装图文教程(Windows)
2017/12/28 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
汉语言文学毕业生求职信
2013/10/01 职场文书
中专生毕业自我鉴定
2013/11/01 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
函授药学自我鉴定
2014/02/07 职场文书
个人剖析材料范文
2014/09/30 职场文书
2014年保育员工作总结
2014/12/02 职场文书
职称评定个人总结
2015/03/05 职场文书
歌剧魅影观后感
2015/06/05 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android