thinkphp5.1 || 上传图片到阿里云oss

本文介绍了如何通过Composer安装阿里云OSS SDK,并配置上传文件。在前端创建了一个简单的文件上传表单,后端使用ThinkPHP的Image库处理图片并利用OSS SDK上传到阿里云存储。配置文件涉及AccessKey、KeySecret、Endpoint和Bucket的设置。
摘要由CSDN通过智能技术生成

composter下载扩展:

https://packagist.org/packages/aliyuncs/oss-sdk-php

composer require aliyuncs/oss-sdk-php
composer require topthink/think-image

配置config:

在application同级目录的config目录里面新建一个aliyun_oss.php的文件,如下:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2021/12/8
 * Time: 11:25
 */
 
// +----------------------------------------------------------------------
// | 阿里云OSS配置
// +----------------------------------------------------------------------
return [
    'KeyId'      => '',  //Access Key ID
    'KeySecret'  => '',  //Access Key Secret
    'Endpoint'   => '',  //阿里云oss 外网地址endpoint
    'Bucket'     => '',  //Bucket名称
];

前端:up_image.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<form  method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="提交">
</form>
</body>
</html>

在这里插入图片描述

后端:up_image.php

<?php

namespace app\index\controller;

use app\api\controller\Base;
use OSS\OssClient;
use think\Controller;
use think\facade\Config;
use think\Image;
use OSS\Core\OssException;

class Uploadoss extends Controller
{
    public function up_image()
    {
        /**
         * 看到有很多人在上传的 时候现实移动到本地文件,然后上传到阿里云
         *大家都知道磁盘IO吧(I是input 输入) O(output 输出)
         *大量的删除文件写入文件对服务器也是有影响的
         */
        if ($this->request->method() == 'POST') {

            $file = request()->file('file');  //获取到上传的文件

            $resResult = Image::open($file);  //获取打开图片的信息,包括图像大小、类型等

            // 尝试执行
            try {
                $config = Config::pull('aliyun_oss'); //获取Oss的配置

               
                //实例化对象 将配置传入
                $ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint']);
               

                //这里是有sha1加密 生成文件名 之后连接上后缀
                $fileName = sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type();
                //执行阿里云上传
                $result = $ossClient->uploadFile($config['Bucket'], $fileName, $file->getInfo()['tmp_name']);
                /**
                 * 这个只是为了展示
                 * 可以删除或者保留下做后面的操作
                 */
                $arr = [
                    '图片地址:' => $result['info']['url'],
                    '数据库保存名称' => $fileName
                ];
            } catch (OssException $e) {
                return $e->getMessage();
            }
            //将结果输出
            dump($arr);
        }

        return $this->fetch();
    }
}

在这里插入图片描述

您可以按照以下步骤在阿里云函数计算上部署ThinkPHP 5.1: 1. 首先,确保您已经注册了阿里云账号,并且开通了函数计算服务。 2. 创建一个新的函数计算服务。在函数计算控制台中,选择所在地域和服务名称,然后点击创建函数计算服务。 3. 在函数计算服务中,选择 "函数" 标签页,点击 "创建函数"。 4. 在创建函数的页面中,填写函数的基本信息。选择运行环境为 PHP 7.2,并且选择 "事件函数" 的触发器类型。 5. 在代码配置中,选择 "自定义代码"。然后将您的 ThinkPHP 5.1 项目代码打包成一个 zip 文件。 6. 上传您的项目代码 zip 文件,并在代码包路径中指定上传的路径。 7. 在入口函数中,填写您的 ThinkPHP 5.1 项目的入口文件路径,例如 `public/index.php`。 8. 确认配置无误后,点击 "下一步"。 9. 在高级设置中,可以设置函数的超时时间和内存大小等参数。根据您的需求进行配置。 10. 点击 "完成" 完成函数的创建。 11. 在函数列表中找到刚刚创建的函数,点击函数名称进入函数详情页面。 12. 在函数详情页面中,点击 "触发器" 标签页,然后点击 "添加触发器"。 13. 在触发器配置中,选择触发器类型为 HTTP 触发器,然后点击 "完成"。 14. 在触发器列表中找到刚刚创建的触发器,复制触发器的 URL。 15. 使用任意 HTTP 客户端工具,发送请求到触发器的 URL,即可调用您的 ThinkPHP 5.1 项目。 这样,您就可以在阿里云函数计算上成功部署和调用 ThinkPHP 5.1 项目了。请注意,部署过程中可能还需要根据您的具体项目需求进行一些额外的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值