Laravel 简单使用七牛云服务

2023-05-16

前言

路漫漫其修远兮,吾将上下而求索。学习 Laravel 之初觉得所有东西都很厉害的样子,现在看来就是很厉害啊!最近在写一个项目上传的模块,要上传图片到七牛云,昨天看了一下午七牛云官方的文档感觉还是迷迷糊糊的,今天尝试着写一写感觉满足我的要求还是蛮简单的,于是赶紧记录一下,每一篇博客都将是我进步的基石。

安装七牛云 SDK

composer require qiniu/php-sdk

获取密钥

首先到七牛云的官网注册账号登陆后,账号->密钥->创建新密钥:

613086-20151004215847840-439172062.jpg

然后新建一个空间,获取七牛域名:

613086-20151004220302152-148771173.jpg

最后将这些信息写到配置文件中:

QINIU_BUCKET=stu2e   //刚刚创建的空间名称,用来保存图片
QINIU_ACCESSKEY=ja_fS4iONGxJgX7h11oxmA0-KhJfrUmHkSMEb_7s
QINIU_SECRETKEY=aO36g6wnLyItch6jgIwglJR17TsR0IlcO5beooxt   // AK 和 SK 用来鉴权
QINIU_DOMAIN=7xn855.com1.z0.glb.clouddn.com   //图片上传成功后会返回一个 Key 值,domain/key 就是上传的资源的路径

SDK 使用

为了方便使用七牛云服务,于是我将它封装成一个服务,顺便复习以下 Laravel 的 Service 和 Facade 模式。具体的流程就不写了,直接写方法的实现吧~

require_once base_path().'/vendor/autoload.php';  
//base_path()获取 laravel 项目的根目录,引入 SDK

use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

class QiniuService
{
    protected $domain = null;
    protected $bucket = null;
    protected $accessKey = null;
    protected $secretKey = null;
    protected $auth;

    public function __construct()
    {
        $this->domain = env('QINIU_DOMAIN');
        $this->bucket = env('QINIU_BUCKET');
        $this->accessKey = env('QINIU_ACCESSKEY');
        $this->secretKey = env('QINIU_SECRETKEY');

        $this->auth = new Auth($this->accessKey, $this->secretKey); //鉴权
    }

    public function upLoad($filePath)
    {
        $token = $this->getToken();   
        //上传时会对比上传表单中 post 过来的 token 是否正确
        $uploadMgr = new UploadManager();
        list($ret, $err) = $uploadMgr->putFile($token, null, $filePath); 
        //第二个参数是保存到空间的图片的名字,默认就好了。
        if ($err !== null) {
            return $err;
        } else {
            return $ret;
        }
    }
    
    public function getDomain()
    {
        return $this->domain;
    }

    public function getToken()
    {
        return $this->auth->uploadToken($this->bucket);  
        //給上传表单生成上传  token
    }
    

路由

use App\Http\Requests;
use Illuminate\Http\Request;

Route::get('/test', function(){
    $token = Qiniu::getToken();
    return view('test')->with('token', $token);
});

Route::post('/test',function(Request $request){
    $payload = $request->all();
    $result = Qiniu::upLoad($payload['file']);
    return Qiniu::getDomain().'/'.$result['key'];
});

HTML 页面

@extends('app')

@section('content')
<div class="container">
    <form method="post" action="{{ url('test') }}" enctype="multipart/form-data">
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <input name="token" type="hidden" value="{{ $token }}">
        <input name="file" type="file" />
        <input type="submit" value="上传"/>
    </form>
</div>
@endsection

关于这个 token 问题,Laravel 默认开启了csrf防御机制,所以上传表单应该包括两个 token 。
ok,简单的上传图片就完成了,打开页面,选择一张图片,上传后就会返回该图片在七牛云空间里的资源路径,拷贝到浏览器地址栏,进入就能看到图片了。

转载于:https://www.cnblogs.com/pengzhendong/p/4855076.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 简单使用七牛云服务 的相关文章

  • 关于python+opencv无法打开摄像的问题

    一开始我认为是软件的兼容问题 xff0c 苦苦思考 xff08 按照流程自己去第三方库里乱下一波是绝对不会出现这种无法打开摄像头的奇葩问题 xff09 xff0c 最终参考网上的教程 xff0c 尝试用系统的相机打开 xff0c 看 xff
  • 蓝桥杯每日一题(28)七段码(python)

    Topic 试题 D 七段码 本题总分 xff1a 10 分 问题描述 小蓝要用七段码数码管来表示一种特殊的文字 上图给出了七段码数码管的一个图示 数码管中一共有 7 段可以发光的二极管 xff0c 分别标记为 a b c d e f g
  • 数据结构之顺序表(C语言)

    目录 1 线性表 1 1 线性表的概念 xff1a 1 2 线性表数据的存储方式 xff1a 注意 xff1a 2 顺序表 2 1 概念 2 2 顺序表的存储结构 3 顺序表的各种操作函数实现 3 1 顺序表初始化 3 2 顺序表判满函数
  • Posix与System V共享内存区

    Posix与System V共享内存区 一 Posix共享内存区1 概述2 shm open和shm unlink函数3 ftruncate和fstat函数4 给一个共享的计数器持续加1 例子5 向一个服务器发送消息例子 二 System
  • ARM裸机开发——Linux环境搭建和LED灯闪烁实验

    写在前面 本文为学校开展的嵌入式系统设计课程 xff0c 本文主要是记录课程中的相关作业与学习记录 xff0c 本课程采用了S3C2440A嵌入式系统开发板 xff0c 由于主要以学校开展课程为主 xff0c 本文内容可能有一定的课程资料辅
  • Linux文件系统常用命令

    文件系统常见目录 boot 包含系统内核 xff0c 系统启动时加载到内存 etc 含系统配置文件 var 含系统中变化信息 xff08 如日志 xff09 的目录 dev 可直接对物理设备存取的特殊文件 bin
  • PTA_Python3_企业根据利润提成发放奖金问题

    企业根据利润提成发放奖金问题 利润低于或等于10万元时 xff0c 奖金可提10 xff1b 利润高于10万元 xff0c 低于20万元时 xff0c 低于10万元的部分按10 提成 xff0c 高于10万元的部分 xff0c 可提成7 5
  • 【4大运营商光猫默认初始超级密码】

    4大运营商光猫默认初始超级密码 xff1a 1 电信超级密码 telecomadmin nE7jA 5m 2 移动超级密码 CMCCAdmin aDm8H MdA 3 联通超级密码 CUAdmin CUAdmin 4 广电超级密码 admi
  • 写delete时遇到的问题

    在写delete的时候会跳出错误 ConsoleApplication1 exe Win32 已加载 C Windows SysWOW64 ntdll dll 无法查找或打开 PDB 文件 ConsoleApplication1 exe W
  • 宏定义可以自增自减吗?(带题讲解,并总结C语言数据类型可自加自减的)

    不可以 通过实验我们可以得出double型数据可以自加 xff0c 且每次变化为1 在宏定义下自加出现了错误 xff0c 如下 xff1a 总结int char double float 都可进行自加自减运算
  • Linux下将当前目录下的某个文件复制到指定文件夹

    cp filename home directory 即cp 文件名 目标文件夹的绝对路径 批量复制 cp filename1 filename2 filename3 home directory 即cp 文件1名 文件2名 文件3名 目标
  • centos的命令行个性化配置

    centos的命令行个性化配置 cd root 进入配置文件 vim bashrc 在末行输入 PS1 61 34 debian chroot 43 debian chroot e 32 1m u e 0m 64 h e 34 1m w e
  • 数据库作业:数据查询 连接查询

    若一个查询同时涉及两个以上的表 xff0c 称之为连接查询 连接查询是数据库中最主要的查询 xff0c 包括等值连接查询 xff0c 自然连接查询 xff0c 自身连接查询等 一 等值和非等值连接查询 1 1连接查询的WHERE子句中用来连
  • Ubuntu20.04安装arm-linux-gcc

    我安装的版本是arm linux gcc 4 6 4 xff0c 并且是64位的 在windows系统中把arm linux gcc 4 6 4 arm x86 64 tar bz2压缩包放在跟Ubuntu虚拟机的共享目录下在Ubuntu2
  • OSI七层模型总结

    OSI Open System Inter Connection 开放系统互联模型 定义了不同计算机互联的标准 xff0c 设计和描述了计算机网络通信的框架 OSI有7层和5层两种模型 xff0c 7层模型从上往下分别是 xff1a 应用层
  • 23种Python设计模式之工厂方法模式详解

    x1f496 作者 xff1a 大家好 xff0c 我是阿旭 x1f61c x1f389 支持我 xff1a 点赞 x1f44d 收藏 留言 x1f4dd x1f4e3 系列专栏 xff1a 23种设计模式详解 Python x1f341
  • STM32F103C8T6驱动SG90舵机--通过延时

    前言 最近博主在尝试驱动SG90舵机的时候 xff0c 发现网上教程都是通过定时器的方式 xff0c 还要进行各种配置 xff0c 太麻烦了 xff0c 于是自己用延时简单写了一下 xff0c 也能用 舵机的控制 舵机控制就是需要一个20m
  • MyBatis-Plus 分页设置不生效

    分页不生效的原因都是拦截器的问题 添加拦截器有两种情况 在配置类上加拦截器 64 Configuration public class MyBatisPlusConfig 新增分页拦截器 xff0c 并设置数据库类型为mysql 64 Be
  • 【关于使用SpringJUnit4ClassRunner单元测试报错问题】

    关于使用SpringJUnit4ClassRunner单元测试报错问题 今天单元测试如下的代码的时候发现项目老是报错 xff1a package com yhb jsxn service import java text SimpleDat
  • Arch linux使用yay安装软件时有效性检查错误

    错误 xff1a 一个或多个文件没有通过有效性检查 span class token operator 61 61 span span class token operator gt span 正在验证 span class token b

随机推荐

  • 无人驾驶(四)---远程桌面控制工具: NoMachine踩坑记录

    NoMachine for mac是一款免费的远程桌面访问工具 xff0c 这款软件的连接到远程桌面后延迟可以非常低 xff0c NX协议在高延迟低带宽的链路上提供了近乎本地速度的响应能力 xff0c 打破空间和时间的障碍 xff0c 让您
  • ubuntu 20.04安装配置ssh远程服务中出现的一些问题及总结

    0 安装配置过程参考 56条消息 ubuntu20 04开启SSH远程登录 从此开始低调范 的博客 CSDN博客 ubuntu开启ssh远程登录 1 输入sudo apt get install openssh server提示Readin
  • OSPF综合实验配置

    1 R4为ISP 其他只能配置IP地址 xff0c R4与其他所有直连设备间使用公有IP 与R4相连的路由器R3 5 6 7都要做NAT 保证底层私网能ping通公网 xff1b R4直连的路由器有缺省指向R4 xff0c 每台路由器都要有
  • 双向重发布--路由策略实验报告

    题目要求 xff1a 1 两个协议间进行多点双向重发布 2 R7环回没有宣告在OPSF中 xff0c 而是后期重发布进入 xff1b 3 解决环路 xff0c 所有路径选择最优 xff0c 且存在备份 一 配置底层IP地址 R3 int g
  • VLAN实验

    实验拓扑 实验配置 1 将接口划入vlan 2 配置路由器 xff0c 通过池塘下发地址 测试 pc2可以访问pc4 pc5 pc6 pc5不能访问pc6 pc1可以访问2 4 5 6
  • TCP三次握手四次挥手(图解)

    TCP三次握手 TCP连接的建立是一个三次握手的过程 如图所示 xff1a 主机A xff08 通常也称为客户端 xff09 发送一个标识了SYN的数据段 xff0c 表示期望与服务器A建立连接 xff0c 此数据段的序列号 xff08 s
  • kali换源详细步骤

    1 进入sources list文件编辑模式 2 把kali原有的源注释掉 xff0c 把阿里源放进去 deb span class token property https span span class token punctuatio
  • C/C++中的1<<n什么意思?

    1 lt lt 2 1的二进制是00000001 lt lt 意思是将二进制编码向左移动2位并将空位补0 即00000001转化为00000100 61 4 同理 1 gt gt n 为将二进制码向右移动n位
  • Linux 文本文件编码GBK转UTF-8

    Linux服务器中调用Oracle卸数工具sqluldr2 xff0c 数据库编码为GBK 需要卸UTF 8的数据文件出来 xff0c 如果某个字段为中文 xff0c 因为GBK为两个字节 xff0c UTF 8为三个字节 xff0c 同样
  • PHP-RCE绕过的姿势总结

    文章目录 前言一 命令执行空格过滤取反绕过命令分隔符黑名单绕过 xff08 比如flag字符 xff09 拼接编码单双引号的绕过 二 代码执行linux中的直接查看文件内容工具通过命令行写入webshell无数字字母绕过webshell无回
  • 一些文件目录架构知识

    在Linux内所有的数据都是以文件的形式来呈现 xff0c 因此 xff0c 在Linux系统中最重要的地方就在于目录树架构 目录树架构 xff1a 指以根目录 xff08 用斜线 表示 xff09 为主 xff0c 然后向下呈现为分支状的
  • date、cal、bc命令简单的使用

    在Linux系统中的命令是严格区分大小写的 xff0c 换句话说就是 xff0c 在Linux环境中字母大小写是不一样的东西 date 显示日期与时间 用法 xff1a 直接在命令行模式中输入 date 敲回车 xff1a 格式化输出功能
  • 几个常见处理目录的命令

    xff5e cd 切换目录 进入当前使用者 debian11 的家目录 xff1a 或者 xff1a cd 去到目前的上层目录 xff1a cd 去到指定的文件的目录 xff1a cd 绝对路径 回到刚刚那个目录 xff1a cd pwd
  • Win10系统下安装JDK8笔记

    一 下载安装包 1 浏览器搜索Oracle的官网 xff1a https www oracle com xff0c 进入如下页面 xff1a 2 点击头部标题栏上的 Products 产品 xff0c 此时会有二级标题显示出来 xff0c
  • 关于Easyexcel读取EXCEL合并单元格信息

    关于Easyexcel读取EXCEL合并单元格信息 1 excel模版 span class token annotation punctuation 64 Configuration span span class token keywo
  • 安装Anaconda之后cmd打不开

    安装Anaconda之后cmd就打不开了 xff0c 原因是AutoRun命令被改为了if exist 按win 43 r xff0c 输入regedit打开注册表编辑器 xff0c 顶部输入 xff1a 计算机 HKEY CURRENT
  • git repo拉取代码gpg: Can‘t check signature: No public key问题,

    qiufanzheng 64 qiufanzheng SJB6 rk356x linux repo init repo url 61 git 64 ashrdgit sh ieinet org vendor google aosp git
  • git repo 拉取代码,报错gpg: Can‘t check signature: No public key问题

    qiufanzheng 64 qiufanzheng SJB6 rk356x linux repo init repo url 61 git 64 ashrdgit sh ieinet org vendor google aosp git
  • 利用栈来判断回文数

    一 xff1a 什么是回文数 xff1a 121 1221 这些数从前往后读 xff0c 从后往前读都是一样的 利用栈求解思路 xff1a 我们用一个数组来存储输入的字符串ss xff0c 然后我们从下标为零到最后 xff0c 取出元素放入
  • Laravel 简单使用七牛云服务

    前言 路漫漫其修远兮 xff0c 吾将上下而求索 学习 Laravel 之初觉得所有东西都很厉害的样子 xff0c 现在看来就是很厉害啊 xff01 最近在写一个项目上传的模块 xff0c 要上传图片到七牛云 xff0c 昨天看了一下午七牛